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. Die Syntax zum Anlegen zeigt der Artikel SQL INDEX.
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.