Detaillierte Erläuterung der Tabellenrückgabe- und Indexabdeckungsbeispiele in MySQL

Detaillierte Erläuterung der Tabellenrückgabe- und Indexabdeckungsbeispiele in MySQL

Indextyp

Gruppierter Index: Blattknoten speichern Zeilendatensätze und jede Tabelle muss mindestens einen gruppierten Index haben. Die Verwendung einer Clustered-Index-Abfrage ist sehr schnell, da Sie den Zeilendatensatz direkt lokalisieren können. Gewöhnlicher Index: Sekundärindex, ein anderer Index als der Clustered-Index, d. h. ein nicht gruppierter Index. Die Blattknoten gewöhnlicher Indizes speichern die Werte des Primärschlüssels (Clusterindex).

Regeln für die Rekursion gruppierter Indizes:

  • Wenn die Tabelle einen Primärschlüssel hat, ist der Primärschlüssel der gruppierte Index.
  • Wenn die Tabelle keinen Primärschlüssel hat, wird standardmäßig die erste NOT NULL- und eindeutige (UNIQUE) Spalte als gruppierter Index verwendet.
  • Wenn keine der oben genannten Angaben gemacht wird, wird standardmäßig eine versteckte Zeilen-ID als gruppierter Index erstellt.

Indexstruktur

id ist der Primärschlüssel, es handelt sich also um einen gruppierten Index, und seine Blattknoten speichern die Daten der entsprechenden Zeilendatensätze.

Nicht gruppierter Index

Clustered-Index-Abfrage

Wenn die Abfragebedingung der Primärschlüssel (Clusterindex) ist, müssen Sie den B+-Baum nur einmal scannen, um die Zeilendatensatzdaten zu finden, die über den Clusterindex gesucht werden sollen.

Beispiel: select * from user where id = 1;

Nicht gruppierte Indexabfrage

Wenn die Abfragebedingung ein gemeinsamer Index (nicht gruppierter Index) ist, muss der B+-Baum zweimal gescannt werden. Der erste Scan lokalisiert den Wert des gruppierten Indexes über den gemeinsamen Index, und dann lokalisiert der zweite Scan die zu findenden Zeilendatensatzdaten über den Wert des gruppierten Indexes.

Beispiel: select * from user where age = 30;

1. Suchen Sie zunächst den Primärschlüsselwert id=1 über den gemeinsamen Index age=30
2. Suchen Sie dann die Zeilendatensatzdaten über den Clustered-Index id=1

Suchen Sie zuerst den Clusterindexwert über den Wert des normalen Index und dann die Zeilendatensatzdaten über den Wert des Clusterindex. Es ist erforderlich, den Index B + -Baum zweimal zu scannen, und seine Leistung ist geringer als beim einmaligen Scannen des Indexbaums.

Indexabdeckung

Alle von SQL benötigten Spaltendaten können in einem Indexbaum abgerufen werden, ohne zur Tabelle zurückkehren zu müssen, was schneller ist.

Beispiel: select id,age from user where age = 10;

Abfrage mittels ID, Alter, Name:

Wählen Sie ID, Alter, Name und Gehalt des Benutzers aus, wobei Alter = 10 ist.
Erläuterung der Analyse: Alter ist ein gemeinsamer Index, aber die Spalte Name befindet sich nicht im Indexbaum. Daher ist es nach der Abfrage der Werte von ID und Alter über den Altersindex erforderlich, zur Tabelle zurückzukehren und den Wert von Name abzufragen. Die Verwendung von Where in der Spalte „Extra“ zeigt an, dass eine Tabellenabfrage ausgeführt wird.

Typ: alle, was auf einen vollständigen Tabellenscan hinweist

Fügen Sie der Tabelle einen gemeinsamen Index hinzu: CREATE INDEX idx_user_name_age_salary ON mydb.user (name, age, salary);

Erläuterung der Analyse: Zu diesem Zeitpunkt sind die Felder Alter und Name der zusammengesetzte Index idx_age_name. Die Werte der abgefragten Felder id, Alter und Name befinden sich nur im Indexbaum. Es ist nur erforderlich, den zusammengesetzten Index B+-Baum einmal zu scannen. Auf diese Weise wird die Indexabdeckung erreicht. Zu diesem Zeitpunkt wird für das zusätzliche Feld Index verwendet, was bedeutet, dass die Indexabdeckung verwendet wird.

Paginierungsabfrage (ohne Verwendung eines Index):

Nachdem Sie einen Index hinzugefügt haben, können Sie ihn für eine schnelle Suche verwenden.

Zusammenfassen

Dies ist das Ende dieses Artikels über Tabellenrückgabe und Indexabdeckung in MySQL. Weitere relevante Inhalte zu MySQL-Tabellenrückgabe und Indexabdeckung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Erklärung der Rückgabe einer MySQL-Tabelle führt zur Ungültigkeit des Index
  • MySQL verwendet einen abdeckenden Index, um Tabellenrückgaben zu vermeiden und die Abfrage zu optimieren
  • So verwenden Sie MySQL zur Abdeckung von Index- und Tabellenrückgabe
  • Wie hoch ist der Leistungsschaden bei der Rückgabe von MySQL-Tabellen?

<<:  Verwendung und Verschönerung von HTML-Blockquote-Tags

>>:  Zusammenfassung des CSS-Zählers und des Inhalts

Artikel empfehlen

Detaillierte Erläuterung der Verarbeitung der drei Docker Nginx-Protokolle

Da die Kollegen im Unternehmen die Standardausgab...

Optimale Webseitenbreite und ihre kompatible Implementierungsmethode

1. Beim Entwerfen einer Webseite ist das Bestimmen...

Detaillierter Installationsprozess von mysql5.7.21 unter Win10

In diesem Artikel erfahren Sie mehr über die Inst...

Beispiel für eine Vue-Datenanzeige auf einem großen Bildschirm

Um die Anforderungen effizient zu erfüllen und au...

Vue realisiert den Fortschrittsbalken-Änderungseffekt

Dieser Artikel verwendet Vue, um einfach die Ände...

Installieren Sie ein CentOS-System basierend auf WindowsX Hyper-V

Derzeit nutzen die meisten Linux-Benutzer entwede...

Teilen Sie JS vier lustige Hacker-Hintergrundeffektcodes

Inhaltsverzeichnis Beispiel 1 Beispiel 2 Beispiel...

Beispiel für die Implementierung eines gestrichelten Rahmens mit html2canvas

html2canvas ist eine Bibliothek, die Canvas aus H...

Detaillierte Erklärung zu React Hooks

Inhaltsverzeichnis Was sind Hooks? Klassenkompone...

Besprechen Sie die Anwendung von Mixin in Vue

Mixins bieten eine sehr flexible Möglichkeit, wie...

Zusammenfassung der speicherbezogenen Parameter von MySQL 8.0

Theoretisch entspricht der von MySQL verwendete S...