Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Optimierung von MySQL-Löschanweisungen

Wenn Ihr DELETE beabsichtigt, eine große Mehrheit der Zeilen in dieser Tabelle zu eliminieren, ist eine Sache, die Leute oft tun, nur die Zeilen zu kopieren, die Sie in eine duplizierte Tabelle behalten wollen, und dann DROP TABLE zu verwenden oder TRUNCATE um die ursprüngliche Tabelle viel schneller zu löschen.

Ein Index kann helfen, die Zeilen zu finden, die Sie löschen müssen, aber zum Löschen muss der Index aktualisiert werden. Nach dem Löschen vieler Zeilen ist der Index möglicherweise unausgeglichen und erfordert einige Wartungsarbeiten mit OPTIMIZE TABLE .

Das DATE_SUB() Die Funktion ist ein konstanter Ausdruck (sie ändert sich nicht Zeile für Zeile), daher sollte der Abfrageoptimierer schlau genug sein, ihn herauszurechnen und die Berechnung einmal durchzuführen.

Sie müssen keinen zusätzlichen Index für einen Primärschlüssel erstellen. Die Primärschlüssel-Einschränkung erstellt implizit einen Index, der denselben Nutzen wie ein Nicht-Primärschlüssel-Index bietet.

Ein zusammengesetzter Index ist wahrscheinlich genauso nützlich wie ein einspaltiger Index, vorausgesetzt, Ihre Suchkriterien beziehen sich auf die Spalte(n) ganz links im Index. Die "wahrscheinlich" Einschränkung ist darauf zurückzuführen, dass die einzelnen Indexknoten größer sind und daher mehr Speicher benötigt wird, um den Index zwischenzuspeichern, aber dies ist ein Faktor, der klein genug ist, dass ich keinen ganz anderen einspaltigen Index erstellen würde.