VorwortBevor wir über den Deckungsindex sprechen, müssen wir zunächst seine Datenstruktur verstehen: B+-Baum. Erstellen Sie zunächst zur Demonstration eine Tabelle (der Einfachheit halber wird die ID der Reihe nach erstellt):
Der B+-Baumindex, der mit anderen Spaltenwerten als dem Primärschlüssel als Schlüsselwerte erstellt wird, wird als nicht gruppierter Index bezeichnet. Der Unterschied zwischen einem nicht gruppierten Index und einem gruppierten Index besteht darin, dass die Blattknoten eines nicht gruppierten Index nicht die Daten in der Tabelle speichern, sondern den der Spalte entsprechenden Primärschlüssel. Wenn wir Daten finden möchten, müssen wir auch im gruppierten Index basierend auf dem Primärschlüssel suchen. Dieser Vorgang der Datensuche basierend auf dem gruppierten Index wird als Tabellenrückgabe bezeichnet. B+ BaumB+-Baum und B-Baum sind häufig verwendete Datenstrukturen für MySQL-Indizes. B+-Baum ist eine weitere Optimierung von B-Baum. Lassen Sie uns die obige Tabelle zur Analyse in ein Diagramm umwandeln: Eigenschaften des B+-Baumes: 1. Nicht-Blattknoten des B+-Baums speichern keine Daten, sondern nur Schlüsselwerte 2. Die Daten der Blattknoten werden in der Reihenfolge angeordnet 3. Die Seiten im B+-Baum sind durch eine bidirektionale verknüpfte Liste verbunden Gruppierte und nicht gruppierte IndizesB+-Baumindizes werden entsprechend den unterschiedlichen Speichermethoden in gruppierte und nicht gruppierte Indizes unterteilt. Gruppierter Index: Bei Tabellen, die InnoDB als Speicher-Engine verwenden, haben alle Daten in der Tabelle einen Primärschlüssel. Auch wenn Sie keinen Primärschlüssel erstellen, erstellt das System einen impliziten Primärschlüssel für Sie. Dies liegt daran, dass InnoDB Daten in einem B+-Baum speichert und der Schlüsselwert des B+-Baums der Primärschlüssel ist. Alle Daten in der Tabelle werden in den Blattknoten des B+-Baums gespeichert. Diese Art von B+-Baumindex, der den Primärschlüssel als Schlüsselwert des B+-Baumindex verwendet, wird als gruppierter Index bezeichnet. Nicht gruppierter Index: Der B+-Baumindex, der mit anderen Spaltenwerten als dem Primärschlüssel als Schlüsselwerte erstellt wird, wird als nicht gruppierter Index bezeichnet. Der Unterschied zwischen einem nicht gruppierten Index und einem gruppierten Index besteht darin, dass die Blattknoten eines nicht gruppierten Index nicht die Daten in der Tabelle speichern, sondern den der Spalte entsprechenden Primärschlüssel. Wenn wir Daten finden möchten, müssen wir auch im gruppierten Index basierend auf dem Primärschlüssel suchen. Dieser Vorgang der Datensuche basierend auf dem gruppierten Index wird als Tabellenrückgabe bezeichnet. So verwenden Sie einen abdeckenden Index, um ein Zurückschreiben der Tabelle zu vermeidenWarum wird die Tabelle zurückgegeben, obwohl ein Nicht-Primärschlüsselindex verwendet wird? Einfach ausgedrückt ist der Nicht-Primärschlüsselindex ein Nicht-Clusterindex. In den untergeordneten Knoten des B+-Baums werden nur der Primärschlüssel und der Nicht-Primärschlüsselindex gespeichert. In einer Abfrage können nur diese beiden Felder gefunden werden. Wenn Sie drei Felder finden möchten, müssen Sie den Clusterindex erneut durchsuchen. Dies ist eine Tabellenrückgabe. Beispielsweise wird der Tabelle ein neues Feld „Alter“ hinzugefügt und wir erstellen einen Index (nicht gruppierter Index) mit „Name“.
Wählen Sie ID, Name vom Benutzer, wobei Name = „zs“ ist; Der Namensindex kann erreicht werden. Der Indexblattknoten speichert die Primärschlüssel-ID. Die ID und der Name können über den Namensindexbaum abgerufen werden, ohne zur Tabelle zurückzukehren. Dies erfüllt die Indexabdeckungsanforderung und ist hocheffizient. Wählen Sie ID, Name und Alter des Benutzers aus, wobei Name = „zs“ ist. Der Namensindex kann getroffen werden. Der Indexblattknoten speichert die Primärschlüssel-ID, aber das Altersfeld kann nur durch Zurückkehren zur Abfragetabelle abgerufen werden, was die Indexabdeckung nicht erfüllt. Es ist erforderlich, den Code erneut über den ID-Wert zu scannen, um das Altersfeld abzurufen, was die Effizienz verringert. Fazit: Wie können wir also Tabellenrückgaben vermeiden? Ganz einfach: Ersetzen Sie den Einzelspaltenindex (Name) durch einen gemeinsamen Index (Name, Alter). ZusammenfassenDies ist das Ende dieses Artikels über MySQL, das einen abdeckenden Index verwendet, um Tabellenrückläufe zu vermeiden und die Abfrage zu optimieren. Weitere relevante MySQL-Abdeckungsindizes, um Tabellenrückläufe zu vermeiden und den Abfrageinhalt zu optimieren, finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Anfänger lernen einige HTML-Tags (1)
>>: Implementierung der ELK-Bereitstellungsmethode mit einem Klick in Docker Compose
Lösung: Setzen Sie den Zielattributwert des Links ...
Inhaltsverzeichnis Vorwort Optimierung SSR Import...
bgcolor="Textfarbe" background="Hin...
Lernen wir verschiedene Arten von Schleifen kenne...
Inhaltsverzeichnis 1. Installieren Sie axios 2. V...
Wir schreiben bereits das Jahr 2020. Hungrige Men...
So setzen Sie den Anfangswert der Auto-Increment-...
Inhaltsverzeichnis 1. Einleitung 2. Einführung in...
Vue empfiehlt in den meisten Fällen die Verwendun...
Einführung Die Standardquelle von Ubuntu ist kein...
1. HTML-Übersicht 1.HTML: Hypertext Markup Langua...
Inhaltsverzeichnis Probleme mit der Ressourcenver...
Das Prinzip besteht darin, zuerst ein Div mit ein...
Was ist ein Mata-Tag? Das <meta>-Element li...
Inhaltsverzeichnis Vorwort 1. Installieren Sie da...