Was ist Index (Datenbankindex)?
Datenstruktur in einer Datenbank, mit der sich anhand eines Werts in einer bestimmten Spalte einer Tabelle schnell die Position der Zeilen mit diesem Wert finden lässt. Häufig werden B+-Bäume verwendet. Sie beschleunigt Suchen, muss aber bei jedem Einfügen, Ändern oder Löschen einer Zeile gepflegt werden und belegt Speicherplatz.
Japanische Bezeichnung: インデックス
„Index (Datenbankindex)“ kommt in 3 Übungsfragen aus 1 Themen vor, z. B. Grundlagen der Datenbanken.
Fachgebiet: Grundlagen der Datenbanken
Wann ein Index hilft und wann nicht
Ein Index wirkt bei einer Spalte mit hoher Selektivität, bei der eine Bedingung die Zeilen auf einen kleinen Bruchteil des Ganzen eingrenzt. Eine Spalte mit lauter verschiedenen Werten wie eine Mitgliedsnummer ist ideal; bei einer Spalte mit nur zwei Werten wie dem Geschlecht trifft dagegen etwa die Hälfte der Zeilen zu, und ein Full Table Scan, der die Tabelle der Reihe nach liest, ist oft schneller als der zeilenweise Abruf über den Index. Für Bedingungen, die eine Funktion auf die Spalte anwenden, oder für Suffixsuchen wie LIKE '%mann' ist ein gewöhnlicher Index unter Umständen nicht nutzbar.
Häufige Fragen
Sollte man auf jeder Spalte einen Index anlegen?
Nein. Je mehr Indizes es gibt, desto mehr Pflegeaufwand entsteht bei jedem Einfügen oder Ändern einer Zeile, und desto mehr Speicher wird belegt. Indizes legt man auf Spalten an, die häufig als Such- oder Join-Bedingung dienen und die Zeilen ausreichend eingrenzen.
Warum wird ein angelegter Index nicht verwendet?
Mögliche Gründe sind, dass der Optimierer so viele passende Zeilen erwartet, dass ein Full Table Scan schneller ist, oder eine Bedingung, die die Sortierung des Index nicht nutzen kann, etwa eine Funktion auf der Spalte oder eine Suffixsuche mit LIKE.