Teil 1: MySQL4 - Optimierung von Anfragen

SQL-Optimierung: Indizes richtig einsetzen

Übertreiben Sie es nicht mit den Indizes

Legen Sie nicht einfach nach dem Motto »je mehr, desto besser« für alles Mögliche einen Index an. Jeder zusätzliche Index belegt zusätzlichen Speicherplatz und wirkt sich, wie bereits erwähnt, negativ auf die Performance der Schreiboperationen aus. Indizes müssen bei Änderungen der Tabelleninhalte Ihrer Datenbank aktualisiert und möglicherweise reorganisiert werden, und je mehr Indizes Sie haben, desto länger dauert das.

Wenn Sie einen Index angelegt haben, den Sie nur selten oder nie benutzen, dann verlangsamt dieser Index die Tabellenaktualisierung nur unnötig. Darüber hinaus berücksichtigt MySQL Indizes beim Anlegen eines Ausführungsplans für Suchoperationen. Durch das Anlegen eines zusätzlichen Index entsteht mehr Arbeit für die Anfrageoptimierung. Außerdem ist es möglich (wenn auch unwahrscheinlich), dass MySQL beim Vorhandensein zu vieler Indizes nicht in der Lage ist, den besten davon auszuwählen. Behalten Sie nur die Indizes bei, die Sie wirklich brauchen, um auf diese Weise Fehler bei der Anfrageoptimierung zu vermeiden.

Wenn Sie einen Index für eine Tabelle anlegen möchten, für die es bereits einen Index gibt, sollten Sie sich fragen, ob der neue Index nicht nur ein linksseitiges Präfix eines bereits existierenden mehrspaltigen Index ist. Ist dies der Fall, dann sollten Sie den neuen Index nicht erstellen, denn Sie haben ihn ja bereits (wenn Sie also einen Index für land, stadt, plz haben, dann ist es sinnlos, noch einen zusätzlichen Index für das Land zu erstellen).