MySQL-Experiment: Verwenden von Explain zur Analyse des Indextrends

MySQL-Experiment: Verwenden von Explain zur Analyse des Indextrends

Überblick

Die Indizierung ist eine Fähigkeit, die in MySQL beherrscht werden muss, und sie ist auch ein Mittel zur Verbesserung der MySQL-Abfrageeffizienz. Können Sie es anhand des folgenden Experiments verstehen? MySQL-Indexregeln können auch SQL-Anweisungen kontinuierlich optimieren

Zweck

Dieses Experiment dient zur Überprüfung des am weitesten links stehenden Prinzips des kombinierten Index

veranschaulichen

Dieses Experiment dient nur zur Überprüfung der Ergebnisse der tatsächlichen Verwendung des Index. Bitte ignorieren Sie die Rationalität des Designs

Vorbereitung

1. Eine Benutzertabelle mit Feldern wie uid, user_name, real_name, eamil usw. Einzelheiten finden Sie in der Anweisung zur Tabellenerstellung
2. Fügen Sie unter dem Feld „Benutzername“ einen einfachen Index „Benutzername“ und unter den Feldern „E-Mail“, „Mobiltelefon“ und „Alter“ einen Index „Komplexindex“ hinzu.
3. Die Tabellen-Engine verwendet MyISAM, erhöhen
4. Bereiten Sie 97.000 Daten vor (die genaue Datenmenge kann je nach tatsächlicher Situation bestimmt werden, hier bereiten wir 97.000+ vor)
5. Experimentelles Werkzeug Navcat

Anweisung „Tabelle erstellen“

Tabelle löschen, wenn `qz_users` vorhanden ist;
Tabelle `qz_users` erstellen (
 `uid` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Benutzer-UID',
 `user_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Benutzername',
 `real_name` varchar(128) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Benutzername',
 `E-Mail` varchar (255) Zeichensatz utf8 Standard NULL Kommentar 'E-Mail',
 `mobile` varchar(16) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Mobiltelefon des Benutzers',
 `password` varchar(32) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Benutzerpasswort',
 `salt` varchar(16) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Vom Benutzer hinzugefügter Verschleierungscode',
 `avatar_file` varchar(128) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Avatar-Datei',
 `sex` tinyint(1) DEFAULT NULL COMMENT 'Geschlecht',
 `Geburtstag` int(10) DEFAULT NULL COMMENT 'Geburtstag',
 Primärschlüssel (`uid`),
 SCHLÜSSEL `Benutzername` (`Benutzername`(250)),
 SCHLÜSSEL `complex_index` (`E-Mail`,`Mobiltelefon`,`Geschlecht`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Vorbereitete Abfragen

Erläutern Sie „select * from qz_users where user_name = "ryanhe";“
Erläutern Sie „select * from qz_users where email = "x";“
Erläutern Sie „Select * from qz_users“, wobei E-Mail = „x“ und Mobiltelefon = „x“ und Geschlecht = 1 ist.
Erläutern Sie „select * from qz_users where email = „x“ und mobile = „x“;
Erläutern Sie „select * from qz_users where email = „x“ und sex = „x“;
Erläutern Sie „select * from qz_users where sex = „x“ und mobile = „x“;
Erläutern Sie „select * from qz_users where mobile = „x“ und sex = „0“;

Ergebnisanalyse

Verwenden der user_name-Bedingung

Erläutern Sie „select * from qz_users where user_name= "x";“

Ergebnis

analysieren

Ob Index verwendet werden soll Indexname Datensätze scannen
Ja Benutzername 1

E-Mail-Bedingungen verwenden

Erläutern Sie „select * from qz_users where email = "x";“

Ergebnis

analysieren

Ob Index verwendet werden soll Indexname Datensätze scannen
Ja komplexer_index 7

Verwenden Sie E-Mail + Handy + Sexbedingungen

Erläutern Sie „Select * from qz_users“, wobei E-Mail = „x“ und Mobiltelefon = „x“ und Geschlecht = 1 ist.

Ergebnis

analysieren

Ob Index verwendet werden soll Indexname Datensätze scannen
Ja komplexer_index 1

Nutzungsbedingungen für E-Mail und Mobilgeräte

Erläutern Sie „select * from qz_users where email = „x“ und mobile = „x“;

Ergebnis

analysieren

Ob Index verwendet werden soll Indexname Datensätze scannen
Ja komplexer_index 7

Verwenden Sie die Bedingung „E-Mail + Geschlecht“

Erläutern Sie „select * from qz_users where email = „x“ und sex = „x“;

Ergebnis

analysieren

][3] Ob Index verwendet werden soll Indexname Datensätze scannen
Ja komplexer_index 7

Verwenden Sie Sex + mobile Bedingungen

Erläutern Sie „select * from qz_users where sex = „x“ und mobile = „x“;

Ergebnis

analysieren

Ob Index verwendet werden soll Indexname Datensätze scannen
NEIN 97185

Verwenden Sie mobile+ Sex-Bedingungen

Erläutern Sie „select * from qz_users where mobile = „18602199680“ und sex = „0“;

Ergebnis

analysieren

Ob Index verwendet werden soll Indexname Datensätze scannen
NEIN 97185

abschließend

Aus den obigen Ergebnissen können wir ersehen, dass nach dem Festlegen des kombinierten Index durch die sinnvolle Verwendung der Abfragebedingungsreihenfolge eine langsame Abfrage von SQL-Anweisungen vermieden werden kann.

Das könnte Sie auch interessieren:
  • So optimieren Sie die MySQL-Indexfunktion basierend auf dem Schlüsselwort „Explain“
  • Erläuterung der MySQL-Indexoptimierung
  • Detaillierte Erläuterung der Verwendung von MySQL Explain (Analyseindex)
  • Mysql-Index kombiniert mit Explain-Analysebeispiel

<<:  JavaScript implementiert einen langen Bild-Scroll-Effekt

>>:  Detailliertes Tutorial zur Installation von Docker auf CentOS 7.5

Artikel empfehlen

Informationen zur Bildlaufleiste in HTML/Bildlaufleiste entfernen

1. Die Farbe der Bildlaufleiste unter xhtml Im Ori...

Detaillierte Erklärung des Linux-Befehls unzip

Inhaltsverzeichnis 1. Unzip-Befehl 1.1 Syntax 1.2...

Element Plus implementiert Affix

Inhaltsverzeichnis 1. Komponenteneinführung 2. Qu...

So aktualisieren Sie die Knotenversion unter CentOs manuell

1. Suchen Sie das entsprechende NodeJS-Paket unte...

Implementierung des CSS Fantastic Border Animation-Effekts

Heute habe ich auf der Blog-Site shoptalkshow ges...

Vue setzt die Daten auf ihren ursprünglichen Zustand zurück

In einigen Fällen müssen die Daten in den Daten w...

Mysql SQL-Anweisungskommentare

Sie können MySQL-SQL-Anweisungen Kommentare hinzu...

Detailliertes Tutorial zum Ersetzen von mysql8.0.17 in Windows 10

In diesem Artikel werden die spezifischen Schritt...

So verwenden Sie xshell zum Herstellen einer Verbindung zu Linux in VMware (2 Methoden)

【Vorwort】 Ich möchte vor Kurzem das Prüfungssyste...