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

Tutorial zur Installation von VMware, Nmap und Burpsuite

Inhaltsverzeichnis VMware BurpSuite 1. Virtuelles...

Mysql löscht doppelte Daten, um die kleinste ID-Lösung beizubehalten

Suchen Sie online nach doppelten Daten und behalt...

So erstellen Sie eine Ansicht in MySQL

Grundlegende Syntax Sie können eine Ansicht mit d...

Webdesign-Tutorial (1): Schritte und Gesamtlayout

<br /> Hinweis: Alle Texte, mit Ausnahme der...

Kann die wiederholbare Leseebene von MySQL Phantomlesevorgänge lösen?

Einführung Als ich mehr über die Datenbanktheorie...

Analyse der HTTP-Dienstschritte auf einer virtuellen VMware-Maschine

1. Verwenden Sie xshell, um eine Verbindung mit d...

Detaillierte Erklärung der Linux-Less-Befehlsbeispiele

weniger Dateiname Datei anzeigen kleiner Dateinam...

Detaillierte Schritte zur Installation der XML-Erweiterung in PHP unter Linux

Installieren der XML-Erweiterung in PHP Linux 1. ...

Erweiterte MySQL-Datenbankabfrage und Mehrtabellenabfrage

MySQL-Abfrage für mehrere Tabellen Hinzufügen ein...

So berechnen Sie mit Linux den von zeitgesteuerten Dateien belegten Speicherplatz

Öffnen Sie den Editor für geplante Aufgaben. Cent...