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 = 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.