Fehlende oder falsche Indizes sind ein häufiger Grund für eine schlechte Abfrageperformance. Mit Hilfe des Slow-Query-Logs lassen sich vorhandene Langläufer meist auch gut identifizieren, jedoch kommt dann natürlich die Frage des Warum?
Auskunft über den Query-Execution-Plan und die Verwendung von Indizes gibt der Befehl Explain.
Folgendes Beispiel zeigt die Ausgabe des Befehls
- EXPLAIN SELECT name, strasse, land FROM adressen WHERE strasse= „hauptstrasse“ and name = „Erk“ ORDER BY strasse;
select_type: SIMPLE
table: adressen
type: ref
possible_keys: strasse, name
key: strasse
key_len: 150
ref: const
rows: 1229
Extra: Using where; Using filesort
Die Ausgabe des Explain-Befehls gibt Aufschluss über die vorhandenen (possible_keys) und verwendeten (key) Indizes. MySQL verwendet pro Tabelle in einer Query maximal einen Index und zwar den, mit der kleineren Treffermenge.
Im oben genannten Beispiel empfiehlt sich also möglicherweise die Anlage eines mehrspaltigen Indizes. Legt man das Sortierkrierium (in diesem Fall Strasse) noch an die letzte Stelle des Indizes, dann spart man sich zusätzlich noch den teuren Filesort da die Daten bereits sortiert im Index liegen.
Inhalt des nächsten und letzten Artikels dieser Serie ist das Thema „Überblick behalten“.
0 Kommentare
Trackbacks/Pingbacks