Beispielcode für das MySQL-Indexprinzip ganz links

Beispielcode für das MySQL-Indexprinzip ganz links

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:
  • Detaillierte Analyse des ganz links stehenden Übereinstimmungsprinzips des MySQL-Gemeinschaftsindex
  • Detaillierte Erläuterung des MySQL-Kombinationsindex und des ganz links stehenden Übereinstimmungsprinzips
  • Eine kurze Diskussion über MySQL-Index-Designprinzipien und die Unterschiede zwischen gängigen Indizes
  • Ein kurzes Verständnis der drei Prinzipien zum Hinzufügen von MySQL-Indizes
  • Verstehen Sie die Prinzipien der MySQL-Indexerstellung in einem Artikel

<<:  Mehrere Methoden für js zur Bestimmung der horizontalen und vertikalen Bildschirmansichtsfenstererkennung von mobilen Endgeräten

>>:  Die Elementbaumsteuerung integriert ein Dropdown-Menü mit Symbolen (Baum+Dropdown+Eingabe)

Artikel empfehlen

Schritte und Fallstricke beim Upgrade von Linux MySQL 5.5 auf MySQL 5.7

Inhaltsverzeichnis Linux MySQL 5.5 auf MySQL 5.7 ...

So konfigurieren Sie eine JDK-Umgebung unter Linux

1. Gehen Sie zur offiziellen Website, um das JDK-...

Erläuterung der Dockerfile-Anweisungen und der grundlegenden Struktur

Durch die Verwendung von Dockerfile können Benutz...

Lösung für das Problem von var in einer for-Schleife

Vorwort var ist eine Möglichkeit, Variablen in ES...

HTML-Tabellen-Tag-Tutorial (35): spaltenübergreifendes Attribut COLSPAN

In einer komplexen Tabellenstruktur erstrecken si...

So fügen Sie Batchdaten unter Node.js in eine MySQL-Datenbank ein

Im Projekt (nodejs) müssen mehrere Daten gleichze...

Teilen Sie 5 JS-High-Order-Funktionen

Inhaltsverzeichnis 1. Einleitung 2. Rekursion 3. ...

Schreiben Sie ein React-ähnliches Framework von Grund auf

Kürzlich habe ich im Internet den Artikel „Build ...

Detaillierte Erklärung der MySQL-Datumsadditions- und -subtraktionsfunktionen

1. addtime() Füge die angegebene Anzahl Sekunden ...

Vue erzielt einen nahtlosen Karusselleffekt (Laufschrift)

In diesem Artikelbeispiel wird der spezifische Co...

Einführung in die Nginx-Protokollverwaltung

Nginx-Protokollbeschreibung Über Zugriffsprotokol...

Tutorial zur Verwendung des Hyperlink-Tags in HTML

Die verschiedenen HTML-Dokumente der Website sind...

Detaillierte Erläuterung der 6 Möglichkeiten der JS-Vererbung

Vererbung von Prototypketten Die Prototypenvererb...