Wie funktionieren zusammengesetzte Indizes?
Habe ich erstellt, composite-Indizes (Indizes für Sie mathematische folk) auf den Tischen vor mit einer übernahme, wie Sie arbeiteten. Ich war nur neugierig, ob meine Vermutung richtig ist oder nicht.
Ich gehe davon aus, dass, wenn Sie die Reihenfolge der Spalten für den index, können Sie auch angeben, wie sich die Indizes gruppiert werden. Zum Beispiel, wenn Sie Spalten a
b
und c
und Sie angeben, dass der index in derselben Reihenfolge a ASC
b ASC
und c ASC
dann der resultierende index wird im wesentlichen werden viele Indizes für jede "Gruppe" in a
.
Ist das richtig? Wenn nicht, was wird der resultierende index Aussehen?
InformationsquelleAutor der Frage Joe Phillips | 2009-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Composite-Indizes funktionieren genauso wie normale Indizes, außer Sie haben multi-Werte-Tasten.
Wenn Sie definieren einen index auf den Feldern (a,b,c) , die Datensätze sortiert zuerst auf a, dann b, dann c.
Beispiel:
InformationsquelleAutor der Antwort Rik
Composite index ist wie einem einfachen alphabet-index in einem Wörterbuch, aber für zwei oder mehr Buchstaben, so wie hier:
etc.
Tabelle Zeilen bestellt werden zuerst durch die erste Spalte im index, dann der zweite usw.
Es ist geeignet, wenn Sie suchen, indem Sie die beiden Spalten ODER nach der ersten Spalte. Wenn Ihr index ist wie folgt:
können Sie es verwenden, für die Suche auf
2
Buchstaben (= 2
Spalten in einer Tabelle), oder wie bei einem einfachen index auf einem Brief:Beachten Sie, dass im Falle eines Wörterbuches, die Seiten selbst sind alphabetisch geordnet. Das ist ein Beispiel für eine
CLUSTERED
index.In einem einfachen, nicht-
CLUSTERED
index, der Verweise auf Seiten angeordnet sind, wie in einem Geschichtsbuch:Zusammengesetzte Indizes können auch verwendet werden, wenn Sie
ORDER BY
zwei oder mehr Spalten. In diesem Fall ist eineDESC
Klausel kann kommen praktisch.Finden Sie in diesem Artikel in meinem blog über die Verwendung von
DESC
Klausel in einem zusammengesetzten index:InformationsquelleAutor der Antwort Quassnoi
Die gemeinsame Umsetzung der Indizes nutzt B-Bäume zu ermöglichen, etwas schnelle Suchvorgänge und auch Recht schnelle Auswahl durchsucht. Es ist zu viel um hier zu erklären, aber hier ist der Wikipedia-Artikel über B-Bäume. Und du hast Recht, die erste Spalte, die Sie erklären, die in der create index mit der höchsten Spalte in der resultierenden B-Baum.
Einer Suche auf den hohen Auftragsbestand Spalte beläuft sich auf einen range-scan, und eine B-tree-index kann sehr nützlich sein für eine solche Suche. Der einfachste Weg, um zu sehen, dieser ist Analog mit der alten Karte, die Kataloge, die Sie in Bibliotheken, die noch nicht umgewandelt, auf Linie Kataloge.
Wenn Sie schauen, für alle Karten, für Autoren, deren Nachname ist "Clemens", Sie gehen Sie einfach auf die Autors-Katalog, und finde sehr schnell eine Schublade, die besagt, "CLE - CLI" auf der Vorderseite. Das ist die richtige Schublade. Jetzt müssen Sie eine Art von informellen binäre Suche in dieser Schublade zu finden schnell alle Karten, die sagen, "Clemens, Roger", oder "Clemens, Samuel" auf.
Aber angenommen, Sie suchen alle die Karten für die Autoren, deren erste name ist "Samuel". Jetzt sind Sie bis auf den Bach, denn diese Karten sind nicht versammelt an einem Ort in der Autor-Katalog. Ein ähnliches Phänomen passiert mit zusammengesetzten Indizes in einer Datenbank.
Verschiedenen DBMS unterscheiden sich darin, wie clever Ihre Optimierer ist an die Aufdeckung index range scans und genaue Schätzung Ihrer Kosten. Und nicht alle Indizes B-Bäume. Sie müssen Lesen Sie die Dokumentation für Ihre spezifischen DBMS, um die eigentliche info.
InformationsquelleAutor der Antwort Walter Mitty
Nicht. Resultierenden index werden die einzelnen index, sondern mit zusammengesetzten Schlüssel.
KeyX = A,B,C,D; Schlüssely = 1,2,3,4;
Index KeyX, Schlüssely tatsächlich: A1,A2,A3,B1,B3,C3,C4,D2
So, in Fall müssen Sie etwas finden, von KeyX und Schlüssely - das wird schnell sein und die Verwendung von single-index. Sowas wie SELECT ... WHERE KeyX = "B" UND Schlüssely = 3.
Aber es ist wichtig zu verstehen: WO KeyX = ? Anfragen wird verwenden, index, während DENEN Schlüssely = ? wird NICHT Verwendung solcher index überhaupt.
InformationsquelleAutor der Antwort Mash
Mein Verständnis ist, Zusammengesetzte Indizes funktionieren genauso wie normale Indizes, außer Sie haben multi-Werte-Tasten. Wenn Sie definieren einen index auf den Feldern (a,b,c) , Da die zusammengesetzten index gespeichert werden, ein BinaryTree daher, den index nur dann funktionieren folgende Kombinationen von sucht.
Zum Beispiel die Erstellung einer composite-index für a,b und c-Feld entspricht erstellen separate Indizes für a, ab und abc.
InformationsquelleAutor der Antwort tk_