Teil 1: MySQL4 - Optimierung von Anfragen

SQL-Optimierung: Indizes richtig einsetzen

Vorteile der Indizierung

Um die Arbeitsweise der Indizes zu verstehen, beginnen wir zunächst mit einer Tabelle ohne Index. Eine nicht indizierte Tabelle ist nichts anderes als eine ungeordnete Ansammlung von Zeilen. Abbildung 1 beispielsweise zeigt die Tabelle ad. Diese Tabelle hat keinen Index. Wenn wir nach den Zeilen für eine bestimmte Firma suchen wollen, müssen wir jede Zeile in der Tabelle durchsuchen, um zu überprüfen, ob es eine Übereinstimmung mit dem gewünschten Wert gibt. Dabei muss die gesamte Tabelle durchsucht werden, was langsam und außerdem hoffnungslos ineffizient ist, wenn die Tabelle umfangreich ist, aber nur wenige Datensätze enthält, die den Suchkriterien entsprechen.

Abbildung 1: Tabelle ad ohne Index
Abbildung 1: Tabelle ad ohne Index

Abbildung 2 zeigt dieselbe Tabelle, jetzt jedoch mit einem Index für die Spalte company_num. Der Index enthält für jede Zeile in der Tabelle ad einen Eintrag, aber die Indexeinträge sind nach dem Wert von company_num sortiert. Anstatt jetzt die ganze Tabelle zeilenweise durchsuchen zu müssen, wenn nach einer Übereinstimmung gesucht wird, verwenden wir einfach den Index.

Abbildung 2: Tabelle ad mit Index
Abbildung 2: Tabelle ad mit Index

Angenommen, wir suchen alle Zeilen für die Firma 13. Wir durchsuchen den Index und finden drei Zeilen für diese Firma. Danach gelangen wir zu der Zeile für die Firma 14, einem höheren Wert als dem gesuchten. Die Indexwerte liegen also sortiert vor, wenn wir den Datensatz mit dem Wert 14 erreicht haben. Dann wissen wir, dass es keine weiteren Übereinstimmungen mehr geben wird, und können die Suche abbrechen. Dies ist einer der wesentlichen Vorteile eines Index.