Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie sieht ein B-Tree-Index für mehr als eine Spalte aus?

Bei den meisten Implementierungen ist der Schlüssel einfach ein längerer Schlüssel, der alle Schlüsselwerte mit einem Trennzeichen enthält. Keine Zauberei;-)

In Ihrem Beispiel könnten die Schlüsselwerte etwa so aussehen

"123499|John Doe|Conway, NH"
"32144|Bill Gates| Seattle, WA"

Eines der Merkmale dieser Indizes mit zusammengesetzten Schlüsseln ist, dass die Zwischenbaumknoten in einigen Fällen verwendet werden können, um die Abfrage zu "decken".

Wenn beispielsweise die Abfrage den Namen und die Stadt bei gegebener ID finden soll, kann der Index, da die ID an erster Stelle im Index steht, effizient danach suchen. Sobald es sich im Zwischenknoten befindet, kann es den Namen und die Stadt aus dem Schlüssel "parsen" und muss nicht zum Blattknoten gehen, um dasselbe zu lesen.

Wenn die Abfrage jedoch auch die Telefonnummer anzeigen wollte, würde die Logik dem Blatt nach unten folgen, wenn der vollständige Datensatz gefunden wird.