Datenbank Index


Der Datenbank index ist eine Datenstruktur mit deren Hilfe die Abfrageoptimierung gesteigert werden kann. Mittels einer Indextabelle werden die Daten sortiert auf dem Datenträger abgelegt.

Der Index selbst stellt einen Zeiger dar, der entweder auf einen weiteren Index oder auf einen Datensatz zeigt. Dadurch findet eine Trennung von Daten- und Index-Strukturen statt.

Welche Arten von Datenbank-Indizes existieren?

Bei Datenbanken unterscheidet man generell zwei Arten von Indizes. Zum einen gibt es gruppierte Indizes (Clustered Index). Zum anderen gibt esnicht-gruppierte Indizes (Nonclustered Index).

Ohne Indizes auf einer Tabelle müsste die Datenbank die Informationen (Datensatz)sequentiell suchen, was selbst mit modernster Hardware und Software viel Zeit beanspruchenkann.

Gruppierte Indizes (Clustered Index)

Bei der Verwendung eines gruppierten Index werden die Datensätze entsprechend derSortierreihenfolge ihres Index-Schlüssels gespeichert. Wird für eine Tabelle beispielsweise eine Primärschlüssel-Spalte „ID“ angelegt, so stellt diese den Index-Schlüssel dar. Pro Tabelle kann nur ein gruppierter Index erstellt werden. Dieser kann jedoch aus mehreren Spalten zusammengesetzt sein.

Nicht-gruppierte Indizes (Nonclustered Index)

Besitzt eine Tabelle einen gruppierten Index, so können weitere nicht-gruppierte Indizes angelegt werden. Dabei zeigen die Einträge des Index auf den Speicherbereich des gesamten Datensatzes. DieVerwendung eines nicht-gruppierten Index bietet sich an, wenn regelmäßig nach bestimmten Werten in einer Spalte gesucht wird z.B. dem Namen eines Kunden.

Bei einer Abfrage wird nun zuerst nach dem Namen gesucht. Werden weitere Daten zum Kunden benötigt, so können diese über den gruppierten Index, der mit dem Namen abgelegt wurde, abgerufen werden. Bei einem nicht-gruppierten Index ist es nicht notwendig, dass dessen Werte eindeutig sein müssen. Zudem kann auch dieser aus mehreren Spalten zusammengesetzt sein.

Darüber hinaus gibt es noch weitere sehr spezielle und zum Teil proprietäre Indizes, die in bestimmten Datenbanken verwendet werden. Beispielsweise der Bitmap-Index, der im Data Warehouse eingesetzt wird.

Vorteile von Datenbank Indizes

Der Einsatz von Indizes empfiehlt sich für Datenbanken die große Datenmengen speichern und sehr häufig abgefragt werden. Hier kommt es darauf an welche Informationen dabei eine zentrale Rolle spielen.

Welcher Index bei einer Abfrage tatsächlich verwendet wird, entscheidet in letzter Instanz der Abfrageoptimierer der Datenbank. Dieser erstellt für eine Abfrage mehrere Ausführungspläne, um die Kosten für die Abfrage zu ermitteln. Wird diese nun ausgeführt, wählt er den kostengünstigsten Ausführungsplan. Dieser berücksichtigt nicht nur Indizes, sondern auch die Systemauslastung.

Nachteile eines Datenbank Index

Das Anlegen von Indexstrukturen führt zur Belegung von Plattenspeicher und kann bei einer großen Anzahl von Indizes einen nicht unerheblichen Speicherverbrauch verursachen.

Ein weiterer Nachteil ist, dass der Einsatz von Indizes zu einem größeren Aufwand beim Schreiben von Datensätzen führt. Das Datenbankmanagementsystem muss in diesem Fall auch den Index berücksichtigen und diesen entsprechend laden. Hier gilt, je mehr Indizes eine Tabelle hat, desto größer ist der Performance-Verlust beim Speichern neuer Datensätze.