Warum Sie verstehen müssen, erklären Sie:
Möchten Sie die interne Situation der ausgewählten Abfrage verstehen, wie der Abfrageoptimierer funktioniert, und ob es verwendet werden soll, wenn es um die Indizierung geht, erklären kann es.
So funktioniert der MySQL-Abfrageoptimierer:
Der MySQL-Abfrageoptimierer hat mehrere Ziele, darunter aber die wichtigsten Ziel ist es, wann immer möglich Indizes zu verwenden und den strengsten Index zu verwenden, der möglich ist, um so viele Datenzeilen wie möglich zu eliminieren. Das ultimative Ziel besteht darin, eine SELECT-Anweisung zu senden, um Datenzeilen zu finden, und nicht, Datenzeilen auszuschließen. Der Grund dafür, dass der Optimierer versucht, Zeilen auszuschließen, besteht darin, dass er umso schneller Zeilen finden kann, die der Bedingung entsprechen, je schneller er Zeilen ausschließen kann. Abfragen können schneller ausgeführt werden, wenn zuerst die strengsten Tests durchgeführt werden.
1.explain Es gibt zehn Attributparameter
2. Erläuterung der EXPLAIN-Spalte:
1.id: Die im ausgewählten Ausführungsplan abgefragte Sequenznummer . Gibt die Reihenfolge an, in der Auswahlklauseln oder Operationstabellen in der Abfrage ausgeführt werden. Je größer der ID-Wert, desto höher die Priorität und desto früher wird sie ausgeführt. Die IDs sind gleich und die Ausführungsreihenfolge ist von oben nach unten.
2.select_type: Abfragetyp, Beschreibung :
3.Tabelle: Diese Zeile anzeigen Um welche Tabelle handelt es sich bei den Daten? Wichtige Spalte, die zeigt, welche Art von
die Verbindung verwendet. Die Join-Typen vom besten zum schlechtesten sind const, eq_reg, ref, range, index und ALL 5.mögliche_Tasten: AnzeigenmöglichDer Index gilt für diese Tabelle. Wenn leer, ist kein Index möglich. Aus den WHERE-Anweisungen 6.key kann eine entsprechende Anweisung ausgewählt werden: > Der tatsächlich verwendete Index . Bei NULL wird kein Index verwendet. In seltenen Fällen wählt MYSQL einen Index aus, der nicht ausreichend optimiert ist. In diesem Fall können Sie USEINDEX(indexname) in der SELECT-Anweisung verwenden, um die Verwendung eines Index zu erzwingen, oder IGNORE verwenden
INDEX(indexname), um MYSQL zu zwingen, den Index 7.key_len: Die Länge des -Index , der von verwendet wird. Je kürzer die Länge, desto besser, ohne an Genauigkeit zu verlieren 8.ref : Zeigt an, welche Spalte des Index verwendet wird , wenn möglich, ist eine Konstante 9. Zeilen: Die Anzahl der Zeilen, von denen MYSQL glaubt, dass sie überprüft werden müssen, um die angeforderten Daten zurückzugeben 10.Extra: Zusätzliche Informationen darüber, wie MYSQL die Abfrage analysiert. Das schlechte Beispiel, das Sie hier sehen können, ist Using
temporär und die Verwendung von Dateisortierung bedeuten, dass MYSQL den Index überhaupt nicht verwenden kann. Das Ergebnis ist, dass der Abruf sehr langsam ist und vermieden werden sollte. Wenn Typ ALLE ist, ist das natürlich der schlimmste Fall. Die Verwendung von Filesort erscheint auch in Extra, was ebenfalls der schlimmste Fall ist und eine Optimierung erforderlich ist. Verwenden Sie EXPLAIN, um zu sehen, ob Ihre Aussage optimiert werden sollte? Das Obige ist die detaillierte Einführung von MySQL Analysis-Explain. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).