Der Index kann entsprechend der zugrunde liegenden Implementierung in B-Tree-Index und Hash-Index unterteilt werden. Meistens verwenden wir den B-Tree-Index, da seine gute Leistung und Eigenschaften besser für Build geeignet sind Systeme mit hoher Parallelität.
Unterteilt nach der Speichermethode des Index kann der Index in Clustered-Index und Nicht-Clustered-Index unterteilt werden. Die Blattknoten eines nicht gruppierten Index enthalten nur alle Felder und Primärschlüssel-IDs, während die Blattknoten eines gruppierten Index vollständige Datensatzzeilen enthalten.
Je nach Clustered-Index und Non-Clustered-Index kann er weiter in gewöhnliche Indizes, abdeckende Indizes, eindeutige Indizes und gemeinsame Indizes unterteilt werden.
Der nicht gruppierte Index wird auch als Hilfsindex und gewöhnlicher Index bezeichnet. Seine Blattknoten enthalten nur einen Primärschlüsselwert. Um Datensätze über den nicht gruppierten Index zu finden, müssen Sie zuerst den Primärschlüssel finden Der entsprechende Datensatz im Clustered-Index wird als Tabellenrückgabe bezeichnet.
Zum Beispiel eine Datentabelle mit Benutzernamen und Alter, vorausgesetzt, der Primärschlüssel ist die Benutzer-ID, die Struktur des Clustered-Index ist (orange stellt die ID dar, grün ist der Zeiger auf den untergeordneten Knoten):
Im Blattknoten wird
unterschieden, um den Datensatz hervorzuheben. Tatsächlich bilden sie das Ganze eines Datensatzes.(id, name, age)
Die Struktur eines nicht gruppierten Index (indiziert nach Alter) ist:
Zusätzlich zum Altersfeld selbst ist in den Blattknoten dieses Knotens nur die Primärschlüssel-ID des aktuellen Datensatzes enthalten. nicht die vollständig aufgezeichneten Informationen. Sie müssen den Clustered-Index anhand der ID-Nummer abfragen, um die gesamte Datensatzdatenzeile zu erhalten.
In InnoDB muss jede Tabelle über einen Clustered-Index verfügen, der standardmäßig basierend auf dem Primärschlüssel erstellt wird. Wenn in der Tabelle kein Primärschlüssel vorhanden ist, wählt InnoDB eine geeignete Spalte als Clustered-Index aus. Wenn keine geeignete Spalte gefunden wird, wird eine versteckte Spalte DB_ROW_ID als Clustered-Index verwendet.
3. Abdeckungsindex
Nehmen Sie den Altersindex oben als Beispiel. Es handelt sich um einen nicht gruppierten Index. Wenn ich die ID des Benutzers nach Alter abfragen möchte, führe ich die folgende Anweisung aus:
select id from Benutzerinfo, wobei Alter = 10; |
Das obige ist der detaillierte Inhalt vonWas sind Clustered-Indizes, Nicht-Clustered-Indizes, Joint-Indizes und Unique-Indizes in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!