Grundlagen der Datenbanken
Auf der Spalte MitgliedsNr einer Mitgliedertabelle mit 1 Million Zeilen wurde ein B+-Baum-Index angelegt. Welche Kombination aus allgemein zu erwartender Wirkung und deren Preis ist richtig?
- ASuchen wie WHERE MitgliedsNr = 12345 werden schneller, doch Schreibvorgänge werden langsamer, weil bei jedem Einfügen oder Ändern einer Zeile auch der Index aktualisiert werden muss
- BSuchen auf allen Spalten werden schneller, ohne jeden Preis
- CDie Zeilen der Tabelle werden nach MitgliedsNr sortiert, sodass jede Suche schneller wird, und der Speicherbedarf halbiert sich
Antwort und Erläuterung anzeigen
Antwort: A. Suchen wie WHERE MitgliedsNr = 12345 werden schneller, doch Schreibvorgänge werden langsamer, weil bei jedem Einfügen oder Ändern einer Zeile auch der Index aktualisiert werden muss
Ein Index ist eine Datenstruktur, mit der sich anhand eines Werts in einer bestimmten Spalte schnell die Position der Zeilen mit diesem Wert finden lässt; relationale Datenbanken verwenden häufig B+-Bäume. Ohne Index müsste man, um die Zeile WHERE MitgliedsNr = 12345 zu finden, 1 Million Zeilen der Reihe nach durchsuchen (Full Table Scan), mit einem B+-Baum findet man sie dagegen, indem man nur wenige Ebenen von der Wurzel bis zu einem Blatt durchläuft. Verzweigt jeder Knoten zum Beispiel 100-fach, gilt 100 × 100 × 100 = 1 Million, es genügen also etwa drei Ebenen. Da die Blätter eines B+-Baums in Wertereihenfolge verkettet sind, lässt sich der Index auch für Bereichssuchen wie BETWEEN und für die Sortierung mit ORDER BY nutzen. Andererseits muss der Index bei jedem Einfügen, Ändern oder Löschen einer Zeile mit aktualisiert werden, sodass Schreibvorgänge langsamer werden, und der Index braucht Speicherplatz. Suchen auf Spalten ohne Index werden nicht schneller.