ÜberblickEin Index ist eine Struktur, die die Werte einer oder mehrerer Spalten einer Datenbanktabelle sortiert. Über einen Index kann schnell auf bestimmte Informationen in einer Datenbanktabelle zugegriffen werden. Indexdatenstruktur Binärer BaumEin binärer Baum ist ein geordneter Baum, bei dem der Grad der Knoten im Baum nicht höher als 2 ist. Es handelt sich um den einfachsten und wichtigsten Baum. Die rekursive Definition eines Binärbaums lautet: Ein Binärbaum ist ein leerer Baum oder ein nicht leerer Baum, der aus einem Wurzelknoten und zwei sich nicht überschneidenden linken und rechten Teilbäumen der Wurzel besteht; der linke und der rechte Teilbaum sind ebenfalls Binärbäume. Für das Array {1,2,3,4,5} wird die Datenstruktur zu einer verknüpften Liste Merkmale:
Rot-Schwarzer BaumEin Rot-Schwarz-Baum ist ein spezieller Typ eines Binärbaums, einer Struktur, die in der Informatik zum Organisieren von Datenblöcken, beispielsweise Zahlen, verwendet wird. Wenn ein binärer Suchbaum ein Rot-Schwarz-Baum ist, muss jeder seiner Teilbäume ein Rot-Schwarz-Baum sein. Der Rot-Schwarz-Baum ist eine Variante eines ausgeglichenen binären Suchbaums. Der Höhenunterschied zwischen seinen linken und rechten Teilbäumen kann größer als 1 sein, sodass der Rot-Schwarz-Baum kein streng ausgeglichener binärer Baum (AVL) ist, aber die Kosten für seinen Ausgleich sind gering und seine durchschnittliche statistische Leistung ist besser als die des AVL. Da jeder Rot-Schwarz-Baum ein binär sortierter Baum ist, kann bei der Suche nach einem Rot-Schwarz-Baum der Suchalgorithmus verwendet werden, der auf einen gewöhnlichen binär sortierten Baum angewendet wird. Farbinformationen werden während des Suchvorgangs nicht benötigt. Die Datenstruktur des Rot-Schwarz-Baums ist wie folgt:
Merkmale:
B-Baum
B+Baum
Schlüsselwörter: Reihenfolge innerhalb von Knoten, Blattknotenzeigerlinks, Nicht-Blattknoten-Speicherindex (redundant) Abfrage der Größe der Datenseite des MySQL-Index: mysql> globalen Status wie „Innodb_page_size“ anzeigen; +------------------+--------+ | Variablenname | Wert | +------------------+--------+ | Innodb_Seitengröße | 16384 | +------------------+--------+ Warum 16kb einstellen? Hash
Index InnoDB-Indeximplementierung (Clustering)Die Tabellendatendatei selbst ist eine Indexstrukturdatei, die von B+Tree organisiert wird Clustered Index - Blattknoten enthalten vollständige Datensätze Warum muss eine InnoDb-Tabelle einen Primärschlüssel haben, und wird die Verwendung eines ganzzahligen, automatisch inkrementierenden Primärschlüssels empfohlen?
Warum speichern Blattknoten von Nicht-Primärschlüssel-Indexstrukturen Primärschlüsselwerte?
Primärschlüsselindex-Diagramm:
Nicht-Primärschlüssel-Indexdiagrammbild Wenn die Abfrage auf Name = Alice basiert:
Zwei Datendateien: .frm speichert hauptsächlich Informationen zur Tabellenstruktur .ibd speichert hauptsächlich Indizes und Daten MyISAM-Indexdateien (nicht gruppiert) Indexdateien und Datendateien sind getrennt (nicht gruppiert)
Drei Datendateien: .frm-Datenstrukturdatei .myd-Dateien werden hauptsächlich zum Speichern von Daten verwendet .myi-Dateien speichern hauptsächlich Indexinformationen Gruppierte und nicht gruppierte IndizesBesonderheit: Clustering/Nicht-Clustering bezieht sich hauptsächlich darauf, ob die Indexdatei zusammen mit der Datendatei vorliegt. Im Hinblick auf die Abfrageeffizienz führen Cluster-Indizes keine dateiübergreifenden Abfragen durch, was schneller ist. Gemeinsame/zusammengesetzte IndizesMehrere Felder werden in einem gemeinsamen Index organisiert
Warum wird das Prinzip des ganz linken Präfixes auf diese Weise verwendet? Die indizierten Daten sind sortiert und können nicht verwendet werden, wenn Felder übersprungen werden. Beispiel: wobei Name = 'Jeff' und Alter = 22 -- trifft den Index wobei Alter = 30 und Postatin = 'Manager' -- trifft den Index nicht wobei Postation = 'dev' -- trifft den Index nicht VerweiseBaidu-Enzyklopädie ZusammenfassenDies ist das Ende dieses Artikels über die MySQL-Indexdatenstruktur. Weitere relevante Inhalte zur MySQL-Indexdatenstruktur 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:
|
<<: Eine kurze Einführung in den allgemeinen Prozess der Web-Frontend-Webentwicklung
>>: Beispielcode zur einfachen Implementierung des Seitenlayouts mit Flex-Layout
Das Installationstutorial für mysql5.7.17 wird Ih...
Es gibt zwei Arten von Linux-Systemzeiten. (1) Ka...
Notieren Sie die Installation von zwei MySQL5.6.3...
Bei der Frontend-Entwicklung stehen wir in direkt...
InhaltHyperledger Fabric1.4-Umgebungseinrichtung ...
Inhaltsverzeichnis Thema analysieren Basislösung ...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Installieren Sie Mockjs in Ihr...
FTP wird hauptsächlich für die Dateiübertragung v...
Aufgezeichnetes MySQL 5.7.9-Installationstutorial...
Beim Erstellen eines DIV+CSS-Layouts einer Seite ...
Inhaltsverzeichnis 1. Schreiben Sie Webshell in d...
Dieser Artikel beschreibt die Bereitstellungsmeth...
Im vorherigen Artikel „Änderungen der MySQL-Tabel...
In Tomcat ist JSP nicht verstümmelt, aber HTML-Ch...