Zusammenfassung der Wissenspunkte zum B-Tree-Index bei der MySQL-Optimierung

Zusammenfassung der Wissenspunkte zum B-Tree-Index bei der MySQL-Optimierung

Warum müssen wir SQL optimieren? Wenn wir SQL-Anweisungen schreiben, gilt natürlich Folgendes:

  • 1 Sie werden feststellen, dass die Leistung gering ist
  • 2. Die Ausführungszeit ist zu lang,
  • 3. Oder die Wartezeit ist zu lang
  • 4. Die SQL-Anweisung ist nicht gut und unser Index ist ungültig
  • 5. Die Serverparametereinstellungen sind unangemessen

Analyse des SQL-Anweisungsausführungsprozesses

1. Schreibprozess:

Der Schreibvorgang ist der Prozess des Schreibens von SQL-Anweisungen in unserem täglichen Leben, der auch als Schreibreihenfolge verstanden werden kann. Folgendes ist unsere Schreibreihenfolge:

Wählen Sie aus, verbinden Sie mit, wo Bedingung gruppieren Sie nach Gruppierung mit Filtergruppe, sortieren Sie nach, begrenzen Sie die Anzahl der Abfragen

Obwohl wir es so geschrieben haben, befolgt die MySQL-Engine beim Parsen nicht die oben angegebene Reihenfolge.

Es wird nicht zuerst die Auswahl analysiert, sondern zuerst die Analyse. Das heißt, unser Analyseprozess stimmt nicht mit dem Schreibprozess überein. Schauen wir uns also die ausgegebene Analysereihenfolge an.

2. Analysevorgang:

von auf verbinden wo gruppieren durch haben auswählen sortieren nach begrenzen

Das Obige stellt den Analyseprozess von MySQL dar. Wir haben festgestellt, dass er völlig inkonsistent mit dem von uns beschriebenen Prozess ist!

Index

Was ist ein Index? Einfach ausgedrückt ist es der Katalog des Buches;

Wenn ich beispielsweise das Wort „王“ in einem Wörterbuch nachschlagen möchte und das Wort „王“ ohne Inhaltsverzeichnis finden möchte, muss ich das Wörterbuch von Anfang bis Ende durchblättern. Wenn es tausend Seiten hat, muss ich es Seite für Seite durchblättern, bis ich es finde.

Der Index entspricht einem Verzeichnis. Bevor wir das Wort „王“ nachschlagen, durchsuchen wir zunächst das Verzeichnis und stellen fest, dass „W“ auf Seite 300 steht. Da der erste Buchstabe von „王“ „W“ ist, können wir direkt auf Seite 300 danach suchen. Auf diese Weise können wir es sehr schnell finden.

Das Schlüsselwort „Index“ in der Datenbank lautet „insex“. Laut der offiziellen Definition ist ein Index eine Datenstruktur, die MySQL dabei hilft, schnell und effizient Daten abzurufen.

Ein Index ist eine Datenstruktur, die zum effizienten Abfragen von Daten dient.

Um welche Datenstruktur handelt es sich also?

Tatsächlich ist es ein Baum. Wir verwenden häufiger B-Baum und Hash-Baum. In MySQL wird der B-Baum-Index verwendet.

B-Baum-Index

Zuerst zeichne ich ein Bild, tue so, als wäre dies eine Datentabelle, und füge der Spalte „Alter“ einen Index hinzu:

Stellen Sie sich diesen Index einfach als ein Verzeichnis vor, d. h. Alter 50 verweist auf die erste Zeile, Alter 33 verweist auf die fünfte Zeile.

Als nächstes zeichne ich den B-Baum-Index, um zu sehen, wie er indiziert ist:

Nachdem wir dem Alter eine Indexspalte hinzugefügt haben, sieht es wie ein Baum aus, mit kleineren Werten links und größeren Werten rechts. Die erste Spalte ist 50, und Werte kleiner als 50 stehen links, und 23 und Werte kleiner als 23 werden weiterhin links angeordnet.

Da 33 größer als 23 ist, wird es links angeordnet. Da 20 kleiner als 22 ist, wird es auch nach 22 links angeordnet und so weiter!

Beispielsweise müssen wir jetzt 33 überprüfen:

Wählen Sie * aus Tabellenname, wobei Alter = 33 ist;

Ohne Index beginnt die Suche bei 50. 50 ist nicht 23, nicht 22, nicht …. Ohne Index beginnt die Suche eins nach dem anderen.

Wenn wir einen Index hinzufügen, suchen wir nach 33 und stellen fest, dass 33 kleiner als 50 ist. Beim ersten Mal suchen wir nach 23. Beim zweiten Mal ist 33 größer als 23. Beim dritten Mal finden wir es in nur drei Versuchen:

Nachteile der Indizierung

1. Der Index selbst nimmt viel Platz ein und kann (normalerweise) im Speicher/auf der Festplatte gespeichert werden.

2. Indizes sind nicht in allen Situationen anwendbar, z. B. bei kleinen Datenmengen und häufig aktualisierten Feldern (wenn sich eine Spalte in einer Datentabelle häufig ändert, ist diese Spalte nicht für die Indizierung geeignet).

3. Indizes können zwar die Abfrageeffizienz verbessern, verringern jedoch gleichzeitig die Effizienz von Hinzufügungen, Löschungen und Änderungen, zum Beispiel:

Wir haben keinen Index. Wenn Sie 44 in 45 ändern, ist das ganz einfach. Wenn Sie einen Index haben, muss ich nicht nur 44 in der Tabelle ändern, sondern auch 44 im B-Baum:

Manche Leute denken, dass es nicht kosteneffektiv ist, einen anzuheben und drei abzusenken, was nicht kosteneffektiv ist. Tatsächlich ist es sehr kosteneffektiv!

Da wir meistens nur sehr selten abfragen, hinzufügen, löschen und ändern, ist es sehr wichtig, Abfragen zu verwenden, da sie einen großen Einfluss auf die Leistung haben.

Vorteile von Indizes

1. Verbesserte Abfrageeffizienz

Der Client stellt über IO sowie über Eingabe- und Ausgabestreams eine Verbindung zum Server her. Eine Verbesserung der Abfrageeffizienz bedeutet daher eine Reduzierung der IO-Nutzung.

2. Reduzieren Sie die CPU-Auslastung

Wenn ich beispielsweise eine Anweisung „order by desc“ in SQL habe, die nach Alter in absteigender oder aufsteigender Reihenfolge sortiert, müssen Sie, wenn kein Index vorhanden ist, alle Altersgruppen sortieren. Wenn jedoch ein Index vorhanden ist, müssen Sie sie nicht sortieren. Der B-Baum selbst ist eine sortierte Struktur. Der am weitesten links stehende Baum muss der kleinste und der am weitesten rechts stehende Baum der größte sein:

Sie müssen es nur gemäß bestimmter Regeln durchqueren.

Oben sind die relevanten Wissenspunkte zum B-Nummern-Index. Vielen Dank fürs Lesen und Ihre Unterstützung für 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Eine kurze Diskussion über den MySQL B-Tree-Index und die Indexoptimierungszusammenfassung
  • Welche Vorteile bietet die Verwendung des B+-Baumindex in MySQL?
  • Detaillierte Erklärung des Unterschieds zwischen B-Baum-Index und B+-Baum-Index in MySQL

<<:  Lösungen für Kompatibilitätsprobleme mit virtuellen VMware-Workstation-Maschinen

>>:  js erkennt Schlüsselwörter im Titel und in der Beschreibung und ersetzt sie oder springt zu anderen Seiten, wenn sie gefunden werden

Artikel empfehlen

So installieren Sie Docker CE auf Ubuntu 18.04 (Community Edition)

Deinstallieren Sie alte Versionen Sollten Sie zuv...

Implementierung der Docker-Bereitstellung von ElasticSearch und ElasticSearch-Head

In diesem Artikel wird hauptsächlich erläutert, w...

So veröffentlichen Sie ein lokal erstelltes Docker-Image auf Dockerhub

Heute zeigen wir Ihnen, wie Sie das lokale Docker...

Ausführliche Erklärung verschiedener binärer Objektbeziehungen in JavaScript

Inhaltsverzeichnis Vorwort Beziehungen zwischen v...

Detaillierte Erläuterung des Vuex-Gesamtfalls

Inhaltsverzeichnis 1. Einleitung 2. Vorteile 3. N...

Centos8 (Minimalinstallation) Tutorial zur Installation von Python3.8+pip

Nachdem ich die Installation von Python8 minimier...

Praxis der Bereitstellung von in Python geschriebenen Webanwendungen mit Docker

Inhaltsverzeichnis 1. Docker installieren 2. Code...

Detaillierte Erläuterung der MySQL-Transaktionsverwaltungsvorgänge

Dieser Artikel beschreibt die MySQL-Transaktionsv...