Vorwort Dieser Artikel zielt darauf ab, die langweiligsten Grundkenntnisse in der beliebtesten Sprache zu erklären Dieses Thema ist ziemlich interessant. Gestern Mittag, nach dem Mittagessen, fragte ein Kollege plötzlich: „Gibt es einen Index für „Gefällt mir“?“ Ich sagte nein, und ein anderer Kollege erwiderte, dass ja, und einige Kollegen sagten, es hänge von der Situation ab. Ich war etwas verwirrt und wusste nicht, welche Aussage richtig war, also beschloss ich, eine halbe Stunde damit zu verbringen, dieses Problem zu untersuchen und zu überprüfen, und bekam schließlich die Antwort. Wie kann ich das überprüfen?
Lassen Sie uns über den von MySQL bereitgestellten EXPLAIN-Befehl sprechen: Syntax: Erläuterung des SQL-Statement-Beispiels: 1erklären Sie „select * from user where id=1“ Nach der Ausführung enthält die Ausgabe die folgenden Felder:
Um zu wissen, wie Sie die Benennung erläutern, müssen Sie diese Felder verstehen. 1. Ich würde Die Kennung der SELECT-Abfrage. Jeder SELECT-Anweisung wird automatisch eine eindeutige Kennung zugewiesen. 2. Typ auswählen Der Typ jeder Select-Abfrageanweisung, der spezifische Typ und die entsprechende Funktion sind wie folgt:
3. Tabelle Zeigt an, aus welcher Tabelle die Daten in dieser Zeile stammen, manchmal zeigt der Kurzschluss jedoch nicht den tatsächlichen Tabellennamen an. 4. Partitionen Passende Partitionen (das ist derzeit nicht sehr nützlich) 5. Typ Zugriffstyp, der angibt, wie MySQL die gewünschte Zeile in der Tabelle findet. Die entsprechenden Werte und Erklärungen lauten wie folgt:
Typ ist der Zugriffstyp. Sein Wert stellt den in der aktuellen Abfrage verwendeten Typ dar und ist ein wichtiger Leistungsindikator. Wie aus der Tabelle ersichtlich, wird der Scan-Weg der Tabelle von oben nach unten immer breiter und die Leistung immer schlechter. Daher ist es für eine Abfrage am besten, sie über der Bereichsebene zu halten. 6. mögliche Schlüssel Geben Sie aktiv an, welchen Index die Abfrage verwenden kann, um Datensätze in der Tabelle zu finden. Das heißt, die Felder in der Abfrage werden mit Indizes aufgelistet, werden aber nicht unbedingt von der Abfrage verwendet. 7. Schlüssel Zeigt den tatsächlichen Index/Schlüssel an, der in der Abfrage verwendet wird, oder NULL, wenn kein Index vorhanden ist. Wenn Sie die Abfrage jedoch zwingen möchten, den Index in der Spalte „possible_keys“ zu verwenden oder zu ignorieren, können Sie in der Abfrage FORCE INDEX, USE INDEX oder IGNORE INDEX verwenden. 8. Schlüssellänge Gibt die Anzahl der im Index verwendeten Bytes an. 9. ref Gibt an, welche Spalten oder Konstanten zum Nachschlagen von Werten in der Indexspalte verwendet werden. 10. Reihen Zeigt die geschätzte Anzahl der Zeilen an, die zum Finden übereinstimmender Datensätze für die aktuelle Abfrage erforderlich sind. 11. Extra Zeigt die für die aktuelle Abfrage verwendete Lösung an. Folgende Situationen sind möglich:
Nachdem wir nun die Syntax erklärt haben, führen wir einige tatsächliche Operationen durch. Erstellen Sie zunächst eine Tabelle: -- Tabelle erstellen CREATE TABLE-Test ( id INT(11) NOT NULL AUTO_INCREMENT, uname VARCHAR(255), PRIMÄRSCHLÜSSEL(id) ); Fügen Sie dann dem uname-Feld einen Index hinzu: -- Index hinzufügen ALTER TABLE-Test ADD INDEX uname_index (uname); Überprüfen Sie, ob der Index erfolgreich hinzugefügt wurde: -- Prüfen, ob ein Index vorhanden ist. SHOW INDEX FROM-Test; Die Ausgabe ist: Es ist ersichtlich, dass der Index erfolgreich erstellt wurde. Fügen Sie als Nächstes einige Daten hinzu: - Fügen Sie einige Daten hinzu INSERT INTO test VALUES(1,'jay'); INSERT INTO Testwerte (2, 'ja'); INSERT INTO Testwerte (3, 'bril'); INSERT INTO Testwerte (4, 'aybar'); Alles ist bereit. Lassen Sie uns den Befehl „explain“ verwenden, um zu untersuchen, ob einige „like“-Anweisungen Indizes haben. Es gibt vier Fälle von „like“, nämlich no%, %%, left%, right% und 1. Wie Feldname ERKLÄREN SIE, SELECT * FROM test WHERE uname LIKE 'j'; Die Ausgabe ist: Es ist ersichtlich, dass der Wert des Typs „Bereich“ und der Wert des Schlüssels „uname_index“ ist, was bedeutet, dass in diesem Fall der Index verwendet wird. 2. wie %Feldname% ERKLÄREN SIE, SELECT * FROM test WHERE uname LIKE '%j%'; Die Ausgabe ist: Es ist ersichtlich, dass der Wert des Typs ALL ist, was einen vollständigen Tabellenscan bedeutet, und der Wert des Schlüssels NULL ist, was bedeutet, dass kein Index verwendet wird. 3. wie % Feldname ERKLÄREN SIE, SELECT * FROM test WHERE uname LIKE '%j'; Die Ausgabe ist: Es ist ersichtlich, dass der Wert des Typs ALL ist, der Wert des Schlüssels NULL ist und der Index ebenfalls nicht verwendet wird. 4. Wie Feldname% ERKLÄREN SIE, SELECT * FROM Test WHERE uname LIKE 'j%'; Die Ausgabe ist: Es ist ersichtlich, dass der Wert des Typs „Bereich“ und der Wert des Schlüssels „uname_index“ ist, was bedeutet, dass in diesem Fall der Index verwendet wird. Zusammenfassen Aus dem obigen Experiment können wir die Regel zusammenfassen, ob „like“ den Index verwendet: Damit die „like“-Anweisung den Index wirksam macht, darf „like“ nicht mit „%“ beginnen, d. h. Anweisungen wie „(like %Feldname%)“ und „(like %Feldname)“ machen den Index ungültig, während Anweisungen wie „(like Feldname)“ und „(like Feldname%)“ den Index normal verwenden können. andere Um das Problem des Index-Like zu überprüfen, haben wir MySQLs magische Erklärung untersucht. Allerdings kann die Erklärung nicht nur die Indexnutzung überprüfen, sondern bietet auch viele andere Hilfen zur Leistungsoptimierung. Was die spezifische Nutzung betrifft, ist sie eigentlich dieselbe wie oben erwähnt. Listen Sie die Erklärungsergebnisse auf und folgen Sie dann den Hinweisen, um die zugehörigen Felder zu überprüfen und den entsprechenden Inhalt zu erhalten. Nun, das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung der Standort- und Umschreibenutzung in nginx
>>: Detaillierte Erklärung der Front-End-Sicherheit: JavaScript-Anti-HTTP-Hijacking und XSS
Inhaltsverzeichnis Props-Vergleich von Klassenkom...
Inhaltsverzeichnis Problembeschreibung Frontend-S...
Inhaltsverzeichnis 1. Erstellen Sie eine SQL-Skri...
Ich habe im Internet unzählige my.cnf-Konfigurati...
Inhaltsverzeichnis Vorwort Installieren Sie vue-i...
Inhaltsverzeichnis Vorwort Zusammenfassung der Au...
Was ist Docker-Compose Das Compose-Projekt entsta...
Ich habe immer das Gefühl, dass Übersetzen und Üb...
Gestalten Sie die oben gezeigte Webseite: <!DOC...
Erstellen Sie eine neue Konfigurationsdatei (gehe...
Der Befehl „show processlist“ ist sehr nützlich. ...
Inhaltsverzeichnis Aufbau einer JSX-Umgebung NPM ...
In diesem Artikel wird hauptsächlich der Fall vor...
Schritte zur Linux-Installation von JDK1.8 1. Übe...
Inhaltsverzeichnis Vorwort Rendern setTable-Kompo...