Teil 1: MySQL4 - Optimierung von Anfragen

SQL-Optimierung: Indizes richtig einsetzen

Nutzen Sie linksseitige Präfixe

Wenn Sie einen n-spaltigen Index anlegen, erzeugen Sie eigentlich n Indizes, die MySQL nutzen kann. Ein mehrspaltiger Index stellt deshalb mehrere Indizes dar, weil alle Spaltenmengen von links im Index genutzt werden können, um übereinstimmende Spalten zu finden. Diese Menge wird auch als linksseitiges Präfix bezeichnet (hier liegt ein Unterschied zur Indizierung eines Spaltenpräfix vor, denn dabei werden die ersten n Bytes der Spalte als Indexwerte verwendet).

Angenommen, Sie haben eine Tabelle mit einem Index für die Spalten land, stadt und plz. Die Zeilen im Index werden in der Reihenfolge land, stadt, plz sortiert, sodass sie automatisch auch nach land/stadt oder land sortiert sind. Das bedeutet: MySQL kann den Index nutzen, auch wenn Sie in einer Anfrage insbesondere nach land-Werten suchen oder nur nach land- und stadt-Werten. Damit kann der Index genutzt werden, um die folgenden Spaltenkombinationen zu suchen:

land, stadt, plz

land, stadt

land

MySQL kann den Index jedoch nicht für Suchaktionen verwenden, die kein linksseitiges Präfix verwenden. Wenn Sie beispielsweise nach stadt oder nach plz suchen, wird der Index nicht benutzt. Wenn Sie nach einem bestimmten Land suchen und eine Postleitzahl eingeben (Spalten 1 und 3 des Index), kann der Index nicht für die Wertekombinationen genutzt werden. MySQL kann die Suche jedoch mithilfe des Index eingrenzen, um Zeilen zu finden, die mit dem Land übereinstimmen.