Ü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
In diesem Artikelbeispiel wird der spezifische Im...
Vorbereitung Windows Server 2008 R2 Enterprise (2...
Frontend css3.filter kann nicht nur den Graueffek...
Jedes Mal, wenn ich das System installiert habe, ...
Inhaltsverzeichnis Benutzerverwaltung Neuen Benut...
Funktionen zu Null in MySql IFNULL ISNULL NULLIF ...
1. Postgres-Datenbanksicherung in Docker Befehl: ...
Ich habe online gesucht und festgestellt, dass in...
Ich verwende einen Platzhalter in einer Texteinga...
1. Grammatik: <meta name="Name" conte...
Vorwort Ich habe vor Kurzem Linux gelernt und dan...
0. Umwelt Betriebssystem für diesen Artikel: Cent...
Mit der Popularität und Reife von Docker ist es a...
Inhaltsverzeichnis Mausgelenk Mausgelenk AbstandG...
Inhaltsverzeichnis 1. Analyse der MySQL-Architekt...