Heim  >  Artikel  >  Datenbank  >  Sortieren von MySQL-Indexdaten

Sortieren von MySQL-Indexdaten

黄舟
黄舟Original
2017-01-20 17:01:301699Durchsuche

Im vorherigen Artikel wurden nur kurz einige Strukturen und Speichermethoden von B-TREE vorgestellt, aber die Beziehung zwischen Index und Daten scheint immer noch nicht miteinander verbunden zu sein.

In diesem Artikel wird also ein Beispiel für In welcher Reihenfolge werden die Datenzeilen nach dem Erstellen des Index nach B+TREE sortiert?

1. Simulieren und erstellen Sie Originaldaten

In der Abbildung unten sind die simulierten Daten auf der linken Seite für mich dargestellt. Die Engine ist mysiam~

Die rechte Seite ist eine normale Simulationsdatentabelle nach zufälliger Anordnung mit EXCEL. Die Primärschlüssel werden dann nach 1-27 angeordnet (wenn es nicht zufällig ist, werde ich es eintragen). Reihenfolge beim Simulieren der Daten. Das Hinzufügen eines Index macht es schwierig, den Indexsortierungsprozess zu erkennen.

Mit anderen Worten, die Daten auf der rechten Seite, sodass die Originaldaten, die wir testen möchten, zuvor so sortiert wurden Der Index wurde erstellt und alle nachfolgenden Daten werden nach Standard sortiert, sodass Sie den Sortiereffekt nach der Indexgenerierung besser sehen können.

Die Tabelle hat 4 Felder (id, a, b, c) mit insgesamt 27 Datenzeilen

Sortieren von MySQL-Indexdaten

2. Erstellen Sie Index a

Wie in der folgenden Abbildung gezeigt, ändert sich die Indexstruktur nach dem Erstellen von Index a von der ursprünglichen Sortierung nach der Primärschlüssel-ID zu einer neuen Regel. Wir sagen, dass der Index tatsächlich eine Datenstruktur ist. Erstellen Sie dann den Index a, der eine neue Struktur erstellen soll, und sortieren Sie nach den Regeln von Feld a. Die erste Datenzeile, die durch die Primärschlüssel-ID dargestellt wird, ist 1, die zweite Datenzeile, dargestellt durch ID = 3, und die dritte Datenzeile dargestellt durch die Datenzeile ID=5. . .

Sortieren von MySQL-Indexdaten


Neue Sortier-Primärschlüssel-ID (ID stellt ihre Datenzeile dar): 1 3 5 6 9 16 18 23 26 2 10 11 12 13 14 15 20 25 4 7 8 17 19 21 22 24 27

Wenn das Feld a gleich ist, ist es nicht schwer herauszufinden, dass sie vor und nach der Anordnung entsprechend der Primärschlüssel-ID angeordnet sind Der gleiche Wert ist beispielsweise a=1,1, aber ihre Reihenfolge ist der ID-Wert 1, 3, 5, 6. . Die entsprechenden Zeilen werden in einer ähnlichen Reihenfolge wie die Primärschlüssel-ID sortiert. (Das heißt, bei der Sortierung steht bei Verwendung des gleichen Werts die kleinere ID vorne)


3. Index (a, b) erstellen

Wie unten gezeigt, wird beim Erstellen einer Union nach der Indizierung (a, b) in der Indexstruktur die ursprüngliche Sortierung nach der Primärschlüssel-ID in eine neue Regel geändert. Die Sortierregel sortiert zuerst nach Feld a und dann Sortierung nach Feld b basierend auf a. Das heißt, basierend auf Index a wird auch Feld b sortiert.

Sortieren von MySQL-Indexdaten

Neue Sortier-Primärschlüssel-ID (ID stellt ihre Datenzeile dar): 6 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21

Wenn die Werte der Felder a und b gleich sind, ist ihre Anordnung nicht schwer zu finden wird auch durch die Primärschlüssel-ID bestimmt. Beispielsweise dieselbe Zeile (18,6,23) mit a=1,1 und b=2,1, aber ihre Reihenfolge ist 6,18,23.

Feld (a,b) Index, zuerst nach einem Index sortieren und dann basierend auf a nach b sortieren

6 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21


4. Index erstellen (a,b,c)

Feld (a,b , c) Index, zuerst nach a, b-Index sortieren, dann basierend auf (a, b), nach c sortieren

Sortieren von MySQL-Indexdaten

Neue Sortier-Primärschlüssel-ID (dargestellt durch ID-Daten für ihre Zeile): 23 6 18 15 20 10 27 22 7 1 26 3 11 2 25 24 4 8 5 16 9 12 14 13 17 19 21


5. Fazit:


Sortieren von MySQL-Indexdaten

Sortieren von MySQL-Indexdaten

Es ist das gleiche wie im vorherigen Artikel Mysql-Index-BTree Type [Vereinfacht], B-TREE-Baum Die letzte Reihe der Blattknoten ist in dieser Reihenfolge von links nach rechts angeordnet. Verschiedene Indizes sind in unterschiedlicher Reihenfolge. Wäre die Suche mit der Bestellung nicht viel bequemer und schneller?


Wir wissen, dass der Prozess des Auslesens von Daten (entspricht dem Prozess der Zimmersuche), Wenn ein Index (Raumregistrierungstabelle) vorhanden ist, lesen Sie zuerst die Datenstruktur des Index (da er nur wenige Daten enthält und schnell gelesen werden kann) und suchen Sie den Speicherort der realen physischen Festplatte im Blattknoten seiner Struktur (entspricht Finden Sie die Hausnummer) und rufen Sie dann die Festplatte mit der Hausnummer auf, um die Daten direkt abzurufen. Wenn kein Index vorhanden ist, wissen Sie das Ziel nicht. Suchen Sie einfach von Raum zu Raum.

Wenn kein Index vorhanden ist, ist die Primärschlüssel-ID tatsächlich ihr Index, geordnet nach den Regeln der Primärschlüssel-ID von klein nach groß

Wenn ein Index vorhanden ist, indexieren Sie a, Gelenkindex (a, b), der Gelenkindex (a, b, c) entspricht den drei B+TREE-Strukturen, und die physischen Festplatten, auf die am Ende der Blattknoten verwiesen wird, sind unterschiedlich.


Fazit:

1. Wenn kein Index eingerichtet ist, wird er in aufsteigender Reihenfolge nach dem ID-Primärschlüssel geordnet

2 . Wenn Index a erstellt wird, wird ein neuer Strukturindex (B+TREE) generiert, um eine neue Strukturregel aufzuzeichnen, um die schnelle Suche zu erleichtern

3. Beim Erstellen von Index a, Index ab, Index abc, die drei Die entsprechenden Daten werden sortiert. Sie sind unterschiedlich.

4. Der Index abc berücksichtigt sowohl den Index ab als auch den Index a. Wenn also ersterer verfügbar ist, müssen die beiden letzteren nicht erstellt werden

5. Wenn ein Index erstellt wird, werden nicht indizierte Spalten standardmäßig nach aufsteigender ID sortiert


Weitere Schlussfolgerungen: Mysql-Index-Zusammenfassung: http:// Blog .csdn.net/ty_hf/article/details/53526405


Wenn beim Speichern der Daten ein neues Datenelement eingefügt wird, wird eine Kopie dieser Tabelle erstellt Der Index muss ebenfalls gepflegt werden und an einem geeigneten Ort platziert werden. Dies erklärt, warum Indizes negative Auswirkungen haben können, wenn die Datenmenge in der indizierten Tabelle langsamer wird. Häufiges Einfügen und Löschen von Daten nimmt ebenfalls Zeit in Anspruch. ? 500W? Zu verifizieren.

Das Obige ist der Inhalt der MySQL-Index-Datensortierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn