Vorwort Ich habe kürzlich etwas über MySQL-Indizes gelesen. Als ich den kombinierten Index sah, fand ich ein Prinzip ganz links. Ich habe es eingehend untersucht, indem ich nach relevanten Informationen gesucht habe. Werfen wir einen Blick auf die ausführliche Einführung. Erstellen einer Tabelle CREATE TABLE `Benutzer` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, `sex` tinyint(1) DEFAULT NULL, `Alter` tinyint(2) DEFAULT NULL, Primärschlüssel (`id`), SCHLÜSSEL `Index_user` (`Name`,`Alter`) MIT BTREE ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4; Testen von SQL Der erste mysql> erklären SELECT * FROM `user` where name="tom" \G *************************** 1. Reihe *************************** ID: 1 select_type: EINFACH Tabelle: Benutzer Partitionen: NULL Typ: ref mögliche Schlüssel: Index_Benutzer Schlüssel: Index_user Schlüssellänge: 43 Verweis: const Reihen: 1 gefiltert: 100,00 Extra: NULL Der Zweite mysql> erklären SELECT * FROM `user` where age=18 and name="tom" \G *************************** 1. Reihe *************************** ID: 1 select_type: EINFACH Tabelle: Benutzer Partitionen: NULL Typ: ref mögliche Schlüssel: Index_Benutzer Schlüssel: Index_user Schlüssellänge: 45 Verweis: konstant, konstant Reihen: 1 gefiltert: 100,00 Extra: NULL Der dritte mysql> erklären SELECT * FROM `user` where age=18 \G *************************** 1. Reihe *************************** ID: 1 select_type: EINFACH Tabelle: Benutzer Partitionen: NULL Typ: ALLE mögliche Schlüssel: NULL Schlüssel: NULL key_len: NULL Ref: NULL Reihen: 3 gefiltert: 33,33 Extra: Verwenden von „where“ 1 Zeile im Satz, 1 Warnung (0,00 Sek.) Der vierte mysql> erklären SELECT * FROM `user` where name="tom" und age=18 \G *************************** 1. Reihe *************************** ID: 1 select_type: EINFACH Tabelle: Benutzer Partitionen: NULL Typ: ref mögliche Schlüssel: Index_Benutzer Schlüssel: Index_user Schlüssellänge: 45 Verweis: konstant, konstant Reihen: 1 gefiltert: 100,00 Extra: NULL 1 Zeile im Satz, 1 Warnung (0,00 Sek.) Zusammenfassen Daraus ist ersichtlich, dass nur Abfragen, bei denen die Where-Klausel von SQL das erste Feld des gemeinsamen Indexes enthält, den Index treffen können. Dies wird als am weitesten links stehende Übereinstimmungsfunktion des Indexes bezeichnet. Die Verwendung gemeinsamer Indizes hat nichts mit der Reihenfolge zu tun, in der die Where-Bedingungen geschrieben werden. Die MySQL-Abfrageanalyse wird optimiert und der Index wird verwendet. Um jedoch den Druck auf den Abfrageanalysator zu verringern, ist es am besten, die Reihenfolge des Index von links nach rechts beizubehalten. Die Datenelemente des b+-Baums sind zusammengesetzte Datenstrukturen. Wenn beispielsweise (Name, Alter, Geschlecht) verwendet wird, erstellt der b+-Baum den Suchbaum der Reihe nach von links nach rechts. Wenn beispielsweise Daten wie (Zhang San, 20, W) abgerufen werden, vergleicht der b+-Baum zuerst den Namen, um die nächste Suchrichtung zu bestimmen. Wenn die Namen gleich sind, werden Alter und Geschlecht nacheinander verglichen, um schließlich die abgerufenen Daten zu erhalten. Wenn jedoch Daten wie (20, W) ohne Namen gefunden werden, weiß der b+-Baum nicht, welcher Knoten im ersten Schritt überprüft werden soll, da der Name der erste Vergleichsfaktor ist, wenn der Suchbaum erstellt wird. Es ist notwendig, zuerst basierend auf dem Namen zu suchen, um zu wissen, wo als nächstes abgefragt werden soll. Das ist alles für diesen Artikel. Ich hoffe, dass der Inhalt dieses Artikels für Ihr Studium oder Ihre Arbeit von gewissem Referenzwert ist. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
>>: Die Elementbaumsteuerung integriert ein Dropdown-Menü mit Symbolen (Baum+Dropdown+Eingabe)
Inhaltsverzeichnis Linux MySQL 5.5 auf MySQL 5.7 ...
Die wesentlichen Inhalte dieses Artikels sind wie...
1. Gehen Sie zur offiziellen Website, um das JDK-...
Durch die Verwendung von Dockerfile können Benutz...
Vorwort var ist eine Möglichkeit, Variablen in ES...
In einer komplexen Tabellenstruktur erstrecken si...
Im Projekt (nodejs) müssen mehrere Daten gleichze...
Inhaltsverzeichnis 1. Einleitung 2. Rekursion 3. ...
Kürzlich habe ich im Internet den Artikel „Build ...
1. addtime() Füge die angegebene Anzahl Sekunden ...
Formularelemente dynamisch hinzufügen Das dynamis...
In diesem Artikelbeispiel wird der spezifische Co...
Nginx-Protokollbeschreibung Über Zugriffsprotokol...
Die verschiedenen HTML-Dokumente der Website sind...
Vererbung von Prototypketten Die Prototypenvererb...