Indizes – Warum Datenbanken damit schneller werden
Ein Index ist eine Datenstruktur, mit der eine Datenbank Zeilen findet, ohne die ganze Tabelle durchsuchen zu müssen – vergleichbar mit dem Register eines Fachbuchs. Statt bei jeder SELECT-Abfrage alle Zeilen zu lesen (Full Table Scan), springt die Datenbank direkt zur passenden Position. Dadurch sinken Latenz und Serverlast erheblich.
Wie ein Index funktioniert
Die meisten Datenbanken (MySQL/MariaDB, PostgreSQL) verwenden einen B-Baum. Der Baum bleibt auch bei Millionen Zeilen flach: Eine Suche braucht nur wenige Vergleiche, die Zugriffszeit wächst logarithmisch statt linear. Ein Index auf der Spalte email macht SELECT * FROM user WHERE email = von Sekundenbruchteilen auf Millisekunden schneller – bei großen Tabellen um Größenordnungen.
Wann Indizes sinnvoll sind
- Primärschlüssel und Fremdschlüssel sind automatisch indiziert – hier nichts tun.
- Spalten in
WHERE,JOINundORDER BYsind typische Kandidaten. - Zusammengesetzte Indizes (mehrere Spalten) helfen bei häufigen Kombi-Filtern – Reihenfolge der Spalten beachten.
- Vorsicht bei Schreiblast: Jeder Index muss bei INSERT/UPDATE mitgepflegt werden. Zu viele Indizes bremsen Schreibvorgänge.
Index-Typen im Überblick
- B-Tree – Standard, für Gleichheit und Bereiche.
- Hash – nur Gleichheit, sehr schnell (z. B. InnoDB-Adaptive-Hash).
- Volltext – für Textsuche (siehe auch die SQL-Schnellreferenz).
- SPATIAL – für Geodaten.
Praxistipp: EXPLAIN nutzen
Mit EXPLAIN SELECT ... zeigt MariaDB/MySQL, ob ein Index verwendet wird (Spalte key). Fehlt dort ein Eintrag, lohnt ein neuer Index. Messen statt raten: Die Abfrage SHOW INDEX FROM tabelle listet alle vorhandenen Indizes.
Weiterführend: SQL-Befehle: Schnellreferenz und der Glossar-Eintrag Transaktionen.