1. Szenariobeschreibung: Mein Kollege hat mir gezeigt, wie man „Explain“ in MySQL verwendet, also habe ich die Bedeutung des zurückgegebenen Inhalts überprüft. 2. Nun werden die Nutzinhalte wie folgt erfasst: 1. EXPLAIN zeigt, wie MySQL Indizes verwendet, um Auswahlanweisungen zu verarbeiten und Tabellen zu verknüpfen. Es kann dabei helfen, bessere Indizes auszuwählen und optimiertere Abfrageanweisungen zu schreiben. Um es zu verwenden, fügen Sie einfach „explain“ vor der Select-Anweisung hinzu: erklären Sie select count(DISTINCT uc_userid) als user_login aus user_char_daily_gameapp_11, wobei uc_date >= "2017-09-04" und uc_date<="2017-09-08" AND uc_date >= "2017-06-01" LIMIT 1 2. Erklärung zur Spalte EXPLAIN: Tabelle: Zeigt an, um welche Tabelle es sich bei den Daten in dieser Zeile handelt Typ: Dies ist die wichtige Spalte und zeigt, welche Art von Verbindung verwendet wird. Die Join-Typen vom besten zum schlechtesten sind const, eq_reg, ref, range, indexhe und ALL Possible_keys: Zeigt die Indizes an, die auf diese Tabelle angewendet werden können. Wenn leer, ist kein Index möglich. Sie können für das jeweilige Feld eine entsprechende Anweisung aus der WHERE-Klausel auswählen. Schlüssel: Der tatsächlich verwendete Index. Wenn NULL, wird kein Index verwendet. In seltenen Fällen wählt MySQL einen nicht ausreichend optimierten Index. In diesem Fall können Sie USE INDEX (Indexname) in der SELECT-Anweisung verwenden, um die Verwendung eines Indexes zu erzwingen, oder IGNORE INDEX (Indexname) verwenden, um MySQL zu zwingen, den Index zu ignorieren. key_len: Die Länge des verwendeten Indexes. Je kürzer die Länge, desto besser, ohne an Genauigkeit zu verlieren. ref: zeigt an, welche Spalte des Index verwendet wird, wenn möglich eine Konstante Zeilen: Die Anzahl der Zeilen, die MySQL für notwendig hält, um die angeforderten Daten zurückzugeben Extra: Zusätzliche Informationen darüber, wie MySQL die Abfrage analysiert. Dies wird in Tabelle 4.3 erläutert. Die hier zu sehenden schlechten Beispiele sind jedoch die Verwendung der temporären Methode und die Verwendung der Dateisortierung. Dies bedeutet, dass MySQL den Index überhaupt nicht verwenden kann, was zu langsamen Abrufen führt. 3. Die Bedeutung der von der zusätzlichen Spalte zurückgegebenen Beschreibung Eindeutig: Sobald MySQL eine Zeile findet, die mit der Zeile übereinstimmt, wird die Suche beendet. Existiert nicht: MySQL optimiert LEFT JOIN. Sobald es eine Zeile findet, die den LEFT JOIN-Kriterien entspricht, wird nicht mehr gesucht. Für jeden Datensatz geprüfter Bereich (Indexzuordnung: #): Es wurde kein idealer Index gefunden, daher prüft MySQL für jede Zeilenkombination aus der vorherigen Tabelle, welcher Index verwendet werden soll, und verwendet ihn, um Zeilen aus der Tabelle zurückzugeben. Dies ist eine der langsamsten Verbindungen über den Index Filesort verwenden: Wenn Sie dies sehen, muss die Abfrage optimiert werden. MySQL muss einen zusätzlichen Schritt ausführen, um herauszufinden, wie die zurückgegebenen Zeilen sortiert werden. Es hängt von der Verbindungsart und Sortieren Sie alle Zeilen, indem Sie den Sortierschlüsselwert und die Zeilenzeiger auf alle Zeilen speichern, die der Bedingung entsprechen. Index verwenden: Spaltendaten werden aus der Tabelle zurückgegeben, indem nur die Informationen im Index verwendet werden, ohne dass diese tatsächlich gelesen werden. Dies geschieht, wenn alle angeforderten Spalten für die Tabelle Teil desselben Index sind. Temporäre Verwendung. Wenn Sie dies sehen, muss die Abfrage optimiert werden. Hier muss MySQL eine temporäre Tabelle zum Speichern der Ergebnisse erstellen. Dies geschieht normalerweise, wenn ORDER BY statt GROUP BY auf verschiedene Spaltensätze angewendet wird. Wo verwendet: Die WHERE-Klausel wird verwendet, um einzuschränken, welche Zeilen mit der nächsten Tabelle abgeglichen oder an den Benutzer zurückgegeben werden. Wenn Sie nicht alle Zeilen der Tabelle zurückgeben möchten und der Verbindungstyp ALL oder Index, dies wird passieren, oder es liegt ein Problem mit der Abfrage vor. Erklärung der verschiedenen Verbindungstypen (sortiert nach Effizienz) Die Systemtabelle hat nur eine Zeile: Systemtabelle. Dies ist ein Sonderfall des const-Verbindungstyps const: Der Maximalwert eines Datensatzes in der Tabelle, der dieser Abfrage entsprechen kann (der Index kann ein Primärschlüssel oder ein eindeutiger Index sein). Da es nur eine Zeile gibt, ist dieser Wert eigentlich eine Konstante, denn MySQL liest zuerst den Wert und behandelt ihn dann als Konstante. eq_ref: Bei einem Join liest MySQL für jeden Datensatz im Join einen Datensatz aus der vorherigen Tabelle. Dabei wird der Index als Primärschlüssel oder eindeutiger Schlüssel in der Abfrage verwendet. Alle Nutzungsmöglichkeiten mit einem Klick ref: Dieser Verknüpfungstyp tritt nur auf, wenn die Abfrage einen Schlüssel verwendet, der kein eindeutiger oder Primärschlüssel ist oder Teil eines dieser Typen ist (z. B. bei Verwendung eines ganz linken Präfixes). Für die vorherige Tabelle Bei jedem Zeilenjoin werden alle Datensätze aus der Tabelle gelesen. Dieser Typ hängt stark davon ab, wie viele Datensätze mit dem Index abgeglichen werden – je weniger, desto besser. Bereich: Dieser Verknüpfungstyp verwendet einen Index, um einen Zeilenbereich zurückzugeben, z. B. wenn Sie > oder < verwenden, um etwas zu finden. Index: Dieser Verknüpfungstyp führt einen vollständigen Scan aller Datensätze in der vorherigen Tabelle durch (besser als ALLE, da der Index im Allgemeinen kleiner als die Tabellendaten ist). ALLE: Dieser Verknüpfungstyp führt einen vollständigen Scan aller vorherigen Datensätze durch. Dies ist im Allgemeinen schlecht und sollte vermieden werden. Zusammenfassen Oben finden Sie eine ausführliche Erklärung des EXPLAIN-Befehls und seiner Verwendung in MySQL. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht. Das könnte Sie auch interessieren:
|
<<: So verwenden Sie crontab zum Hinzufügen geplanter Aufgaben in Linux
>>: Vor- und Nachteile von React Hooks
1. Befehlseinführung bzip2 wird zum Komprimieren ...
Bei der sogenannten kaskadierenden Replikation sy...
Überblick: Das Dateisystemmodul ist ein einfacher...
Vor Kurzem hat Oracle die öffentliche Verfügbarke...
Wir wissen, dass die Eigenschaften des Auswahltags...
Seurat ist ein umfangreiches R-Paket für die Einz...
Problembeschreibung Wie wir alle wissen, wird bei...
Inhaltsverzeichnis Vorwort Vorbereiten Zusammenfa...
Inhaltsverzeichnis 1. WordPress-Bereitstellung 1....
Offizielle Docker Hub-Website 1. Suchen Sie nach ...
Vorwort Ich habe heute eine kleine Demo geschrieb...
conda aktualisieren conda pip installieren tf-nig...
Installations-Tutorial zur dekomprimierten Versio...
Die Beziehung zwischen Tomcat-Protokollen Ein Bil...
Vorwort Bei der täglichen Entwicklung müssen wir ...