SQL-Index
Kurz: Ein Index ist wie das Stichwortverzeichnis eines Buchs: Die Datenbank findet Zeilen schnell, ohne die ganze Tabelle zu lesen.
Genauer: Ohne Index muss die Datenbank bei einer Suche jede Zeile prüfen (Full Table Scan). Mit einem Index (meist ein B-Baum) findet sie passende Zeilen in wenigen Schritten. Dafür kostet der Index Speicherplatz und macht Schreiben etwas langsamer.
Im Detail
- Wann anlegen: Auf Spalten, nach denen oft gefiltert, sortiert oder verknüpft wird (
WHERE,JOIN,ORDER BY). - Zusammengesetzter Index: Reihenfolge der Spalten zählt: Ein Index auf (a, b) hilft bei a und bei a+b, nicht bei b allein.
- Eindeutiger Index: Erzwingt Einmaligkeit (z. B. E-Mail-Adresse).
- Nicht jede Abfrage nutzt ihn: Funktionen auf der Spalte (
LOWER(email)) oder führende Platzhalter (LIKE '%abc') verhindern es oft. - Prüfen:
EXPLAINzeigt den Plan der Abfrage. - Zu viele Indizes: Jeder muss bei jedem Schreiben mitgepflegt werden.
Siehe auch: Datenbank-Transaktionen und ACID, Datenbank-Migration