Grundlagen der Datenbanken
Für eine Mitgliedertabelle mit 1 Million Zeilen wird erwogen, auf den Spalten MitgliedsNr (alle verschieden), Präfektur (47 Werte) und Geschlecht (2 Werte, etwa je zur Hälfte) jeweils einen B+-Baum-Index anzulegen. Bei welcher Spalte ist ein Index bei einer Suche, die in der WHERE-Klausel einen Wert für eine Spalte angibt, voraussichtlich am wenigsten wirksam?
- APräfektur
- BGeschlecht
- CMitgliedsNr
Antwort und Erläuterung anzeigen
Antwort: B. Geschlecht
Ein Index ist wirksam, wenn die Zeilen, die die Bedingung erfüllen, auf einen kleinen Bruchteil des Ganzen eingegrenzt werden. Jede MitgliedsNr ist verschieden, also passt nur eine Zeile, und der Index führt direkt zu ihr. Präfektur hat 47 Werte; bei gleichmäßiger Verteilung grenzt ein Wert die Suche auf etwa 1 Million ÷ 47 ≈ 21.000 Zeilen ein (etwa 2 % des Ganzen). Geschlecht hat zwei Werte mit etwa je der Hälfte, beide Werte treffen also auf etwa 500.000 Zeilen zu (etwa 50 %). So viele Zeilen einzeln über einen Index abzurufen ist oft langsamer als ein Full Table Scan, der die Tabelle von Anfang bis Ende liest; der Optimierer des DBMS wählt daher unter Umständen einen Ausführungsplan ohne den Index. Je mehr verschiedene Werte eine Spalte hat und je stärker eine Bedingung auf ihr die Zeilen eingrenzt (je höher die Selektivität), desto wirksamer ist ein Index darauf.