In MySQL ist der Ausführungsplan eine Reihe von Tools, die Benutzern von der Datenbank bereitgestellt werden, um SQL-Anweisungen zu analysieren, zu analysieren und zu optimieren. Die Funktionen des Ausführungsplans sind: 1. Anzeige der Lesereihenfolge der Tabelle; 3. Anzeige der tatsächlich verwendeten Indizes; Die Referenzbeziehung zwischen ihnen; 6. Zeigt die Anzahl der abgefragten Zeilen in jeder Tabelle an.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
Beim Abfragen der Datenbank verwenden wir normalerweise SQL-Anweisungen, um die benötigten Daten abzufragen. Wir wissen jedoch nicht, wie SQL in der Datenbank ausgeführt wird, ob es Indizes verwendet, welche Indizes verwendet werden, welche Felder und Tabellen durchsucht werden, wie ihre Reihenfolge ist, wie viel Zeit sie in Anspruch nehmen usw. Gibt es also welche? Wie können wir diese Informationen sehen? MySQL stellt uns eine Reihe von Tools zur Verfügung – Ausführungspläne.
Der Ausführungsplan ist eine Reihe von Tools, die von der Datenbank zum Parsen, Analysieren und Optimieren von SQL-Anweisungen bereitgestellt werden. Er verfügt über die folgenden Funktionen:
Tabellenlesesequenz anzeigen ;
Typ der Datenleseoperation;
Welche Indizes werden tatsächlich verwendet?
Die Anzahl der Zeilen, nach denen abgefragt wird jeder Tisch.
Hinweis: Der Ausführungsplan ist nur der beste Optimierungsreferenzplan, der von der Datenbank für SQL bereitgestellt wird, und es ist nicht unbedingt die optimale Lösung, das heißt:
Vertrauen Sie dem Ausführungsplan nicht zu sehrVerwendung Der Ausführungsplan ist sehr einfach. Fügen Sie einfach das Schlüsselwort „explain“ vor der auszuführenden SQL hinzu. 3. Informationen zum Ausführungsplan Zeilen, gefiltert, Extra.
Wählen Sie die Seriennummer aus, die ID ist dieselbe, die Ausführungsreihenfolge ist von oben nach unten; je größer der ID-Wert, desto höher die Priorität, desto früher wird ausgeführt;
SIMPLE: Stellt eine einfache Abfrage dar, die keine Verbindungsabfrage und ⼦ Abfrage enthält ;
PRIMARY: Stellt die Hauptabfrage oder die am weitesten entfernte Abfrageanweisung dar;UNION: Stellt die zweite oder nachfolgende Abfrageanweisung der Verbindungsabfrage dar; in UNION hängt von der externen Abfrageabfrage ab;
UNION-ERGEBNIS: Das Ergebnis der Join-Abfrage;Typ: Diese Spalte stellt den Tabellenzuordnungstyp oder Zugriffstyp dar, dh die Datenbank bestimmt, wie Zeilen in der Tabelle gefunden werden und wie groß der ungefähre Bereich der Datenzeilendatensätze ist. Vom besten zum schlechtesten sind es: system > eq_ref > ref > index > die Systemtabelle, die vom Typ const ist. Die speziellen Spalten werden normalerweise nicht angezeigt und können ignoriert werden.
const: Ein Treffer durch den Index, der einer Datenzeile entspricht, daher sehr schnell Abfragen von PRIMARY KEY- oder UNIQUE-Indizes können so verstanden werden, dass const die Optimierung ist , dies ist möglicherweise der beste Join-Typ neben const;Bereich: Nur Zeilen in einem bestimmten Bereich abrufen, einen Index zum Auswählen von Zeilen verwenden, im Allgemeinen für Abfragen wie zwischen, , in usw. verwendet. Diese Bereichsabfrage ist besser als ein Index, da dies nur erforderlich ist Scannen Sie den Index an einem Punkt und enden Sie an einem anderen Punkt.
Index: muss den Indexbaum durchlaufen Anfang bis Ende. Normalerweise erfordert dies das Hinzufügen von Indizes zur Optimierung.
Hinweis: Wenn Sie SQL optimieren, müssen Sie mindestens auf Bereich optimieren. Es wird empfohlen, auf ref zu optimieren, vorzugsweise auf const.
3.6, mögliche_Schlüssel
mögliche_Schlüssel: Diese Spalte zeigt, welche Indizes von der Abfrage zum Suchen verwendet werden können. Bei der Erklärung kann es vorkommen, dass „possible_keys“ eine Spalte enthält, der Schlüssel jedoch „NULL“ anzeigt. Dies liegt daran, dass die Tabelle nicht viele Daten enthält und die Datenbank denkt, dass der Index für diese Abfrage nicht hilfreich ist, und daher einen vollständigen Index auswählt Tabellenabfrage.
Wenn die Spalte NULL ist, gibt es keinen zugehörigen Index. In diesem Fall können Sie die Where-Klausel überprüfen, um zu sehen, ob Sie einen geeigneten Index zur Verbesserung der Abfrageleistung erstellen können, und dann EXPLAIN verwenden, um die Auswirkung zu sehen.
3.7, Schlüssel
Schlüssel: Zeigt den Schlüssel (Index) an, für dessen Verwendung in der Datenbank tatsächlich entschieden wurde. Wenn kein Index ausgewählt ist, ist der Wert des Schlüssels NULL. Die Verwendung von Indizes kann erzwungen oder ignoriert werden.
3.8, key_lenkey_len: Diese Spalte zeigt die Anzahl der von der
Datenbank im Index verwendeten Bytes. Mithilfe dieses Werts können Sie berechnen, welche Spalten im Index konkret verwendet werden:String-Typ
char(n): n Bytes Länge varchar(n): 2 Bytes Speicherzeichenfolgenlänge, wenn es utf-8 ist, beträgt die Länge 3n + 2
Numerischer Typ tinyint: 1 Byte
smallint: 2 Bytes
int: 4 Bytes
Zeittyp
Datum: 3 Bytes
Zeitstempel: 4 Bytes
Datum/Uhrzeit: 8 Bytes
Wenn das Feld NULL zulässt, ist 1 Byte erforderlich, um aufzuzeichnen, ob NULL ist
Hinweis : Die maximale Indexlänge beträgt 768 Byte. Wenn die Zeichenfolge zu lang ist, führt die Datenbank einen ähnlichen Vorgang wie beim linken Präfixindex durch und extrahiert die erste Hälfte der Zeichen zur Indizierung.
ref: Diese Spalte zeigt die Spalte oder Konstante , die die -Tabelle nach dem Wert im Index des Schlüsselspaltendatensatzes sucht: const (Konstante), func, null, Feldname (Beispiel: film.id)
3.10, Zeilen
Zeilen: Diese Spalte ist die Anzahl, die die Datenbank zum Lesen und Scannen schätzt. Beachten Sie, dass dies nicht die Nummer des Ergebnissatzes ist . Je kleiner der Wert, desto besser.
3.11, gefiltert
gefiltert: Die Anzahl der als Ergebnis zurückgegebenen Zeilen macht den Prozentsatz der Anzahl der gelesenen Zeilen aus, je größer der Wert, desto besser.
3.12, Extraextra: In dieser Spalte werden
zusätzliche Informationen angezeigt, d erste Übereinstimmung⾏ Beenden Sie danach die Suche nach weiteren Zeilen für die aktuelle Zeilenkombination Die vorherige Zeile. Durch die Zeilenkombination werden weitere Zeilen in der Tabelle überprüft vorherige Tabelle Der Wert ist bekannt und einige Indizes können verwendet werden;
mit Dateisortierung (Schlüsselpunkt): Die Datenbank verwendet einen externen Index, um die Ergebnisse zu sortieren, anstatt Zeilen aus der Tabelle in Indexreihenfolge zu lesen. Zu diesem Zeitpunkt durchsucht MySQL alle geeigneten Datensätze entsprechend dem Verbindungstyp, speichert die Sortierschlüsselwörter und Zeilenzeiger, sortiert dann die Schlüsselwörter und ruft die Zeileninformationen der Reihe nach ab. In diesem Fall muss im Allgemeinen darüber nachgedacht werden,Indizes zur Optimierung zu verwenden; bedeutet, dass select einen abdeckenden Index verwendet, ohne zur Tabelle zurückkehren zu müssen ;
mit temporärer (Hervorhebung): Die Datenbank muss
eine temporäre Tabelle erstellen, um die Abfrage zu verarbeitenVerwendung eines Index für Gruppierung nach: Ähnlich wie bei der Methode „Verwendung eines Index“ für den Zugriff auf eine Tabelle bedeutet die Verwendung eines Index für Gruppierung nach, dass die Datenbank einen Index gefunden hat, der zum Abfragen aller Spalten der Gruppe nach oder eindeutiger Abfragen ohne verwendet werden kann zusätzlich Durchsuchen Sie die Festplatte, um auf die tatsächliche Tabelle zuzugreifen.
null: Die abgefragte Spalte wird nicht vom Index abgedeckt, und die Where-Filterbedingung ist die führende Spalte des Index, was bedeutet, dass der Index verwendet wird, aber einige Felder werden nicht vom Index abgedeckt und müssen über „ „Um dies zu erreichen, wird der Index nicht nur verwendet, noch wird der Index überhaupt verwendet. Auch wenn der Index verwendet wird, ist eine Tabellenrückgabeoperation erforderlich. Der Tabellenrückgabevorgang sollte vermieden werden.
【Verwandte Empfehlungen: MySQL-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonWas ist der Ausführungsplan in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!