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 = Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.' 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, JOIN und ORDER BY sind 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.