Teil 4: MySQL 4 - Optimierung bei Insert-Befehlen
SQL-Optimierung: Daten effizient in Tabellen einfügen
De- und Reaktivierung von Indizes
Die Anweisungen DISABLE KEYS
und ENABLE KEYS
sind die zu bevorzugende Methode zur De- und Reaktivierung, weil hier der Server die Arbeit erledigt. Allerdings sind sie erst seit MySQL 4 vorhanden (beachten Sie, dass der Server die Optimierung automatisch durchführt, wenn Sie LOAD DATA
verwenden, um Daten in eine leere MyISAM-Tabelle zu laden).
Um die Indizes einer MyISAM-Tabelle »manuell« zu deaktivieren, vergewissern Sie sich zunächst, dass der Server die Tabelle tatsächlich in Ruhe lässt. Wechseln Sie dann in das Datenbankverzeichnis, und führen Sie den folgenden Befehl aus:
% myisamchk --keys-used=0 tbl_name
Wenn Sie Daten in die Tabelle geladen haben, reaktivieren Sie den Index wie folgt:
% myisamchk --recover --quick --keys-used=n tbl_name
n ist eine Bitmaske, die angibt, welche Indizes zu aktivieren sind. Dabei entspricht Bit 0 dem Index 1. Wenn also eine Tabelle drei Indizes hat, dann sollte n den Wert 7 haben (binär 111). Sie können die Indexnummern mithilfe der Option --description
ermitteln:
% myisamchk --description tbl_name
Die Befehle für ISAM-Tabellen sind ähnlich, nur müssen Sie isamchk statt myisamchk verwenden, und der Wert --keys-used
für isamchk gibt den zu verwendenden Index mit der höchsten Nummer an (bei einer Tabelle mit drei Indizes müsste n dann den Wert 3 haben).