Warum müssen wir SQL optimieren? Wenn wir SQL-Anweisungen schreiben, gilt natürlich Folgendes:
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:
|
<<: Lösungen für Kompatibilitätsprobleme mit virtuellen VMware-Workstation-Maschinen
Die Diversifizierung von Website-Layouts ist unse...
Es gibt zwei Arten von MySQL-Installationsdateien...
1. Mehrere MySQL-Instanzen MySQL Multi-Instance b...
Der Meta-Tag ist ein Hilfstag im Head-Bereich der...
Inhaltsverzeichnis Installieren: 1. Grundlegende ...
Befehl „touch“ Es hat zwei Funktionen: Eine beste...
Mit dem obigen Artikel habe ich meine Einführung i...
Effektanzeige: Controllerknoten zur Umgebungsvorb...
Öffnen Sie den gerade entpackten Ordner C:\web\my...
Die Implementierung des Suchbinärbaums in JavaScr...
1. MySQL Workbench herunterladen Workbench ist ei...
1. Was nützt eine langsame Abfrage? Es kann alle ...
CSS: Code kopieren Der Code lautet wie folgt: html...
Ohne weitere Umschweife hier ein Demobild. Die im...
Es ist sehr einfach, Daten und Tabellen in MySQL ...