Angenommen, es gibt eine Tabelle (Syslogs)mit 1000 Zehntausend Datensätze, darunter alle Datensätze mit statusid=1, die gelöscht werden müssen, ohne das Geschäft zu stoppen. Es sind fast 600 zehntausend Datensätze, führen Sie direkt DELETE FROM syslogs WHERE statusid=1 aus und Sie werden feststellen, dass das Löschen fehlschlägt, weil die Sperrwartezeit überschritten wurde Fehler. Da diese Anweisung zu viele Datensätze umfasst, löschen wir sie stapelweise über den Parameter
LIMIT, z. B. alle 10000 Elemente werden einmal gelöscht, dann können wir Anweisungen wie MySQL verwenden, um :
zu vervollständigen und diese Datensätze dann mehrmals auszuführen kann erfolgreich gelöscht werden.DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000;
Hinweis:
zu verwenden, wenn Sie eine Massenlöschung durchführen. Denn wenn Limit nicht verwendet wird, führt das Löschen einer großen Datenmenge wahrscheinlich zu einem Deadlock. Wenn die
where-Anweisung von delete nicht im Index enthalten ist, können Sie zuerst den Primärschlüssel finden. und löschen Sie dann die Datenbank basierend auf dem Primärschlüssel. Normalerweise ist es am besten,
Limit 1 Aktualisieren hinzuzufügen und Löschen 🎜 > um Missbrauch vorzubeugen.
Das Obige ist der Inhalt von MySQL Advanced, Batch-Löschung, große Datenmengen. Für weitere verwandte Inhalte achten Sie bitte auf PHP-Chinesisch Website (m.sbmmt.com)!