So verwenden Sie die MySQL-Indexzusammenführung

So verwenden Sie die MySQL-Indexzusammenführung

Die Indexzusammenführung ist ein intelligenter Algorithmus, der von MySQL auf der untersten Ebene bereitgestellt wird. Das Verständnis des Index-Merge-Algorithmus hilft uns dabei, bessere Indizes zu erstellen.

Bei einer Indexzusammenführung werden Zeilen abgerufen, indem mehrere Bereichsscans ausgeführt und deren Ergebnismengen zusammengeführt werden. Es werden nur Indexscans aus einer einzelnen Tabelle zusammengeführt, nicht Indexscans über mehrere Tabellen hinweg. Durch die Zusammenführung werden drei Formen zugrunde liegender Scans erzeugt: Vereinigungen, Schnittmengen und Vereinigungen von Schnittmengen (zuerst Schnittmengen und dann Zusammenführung).

Die folgenden vier Beispiele führen zu einer Indexzusammenführung:

SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;
SELECT * FROM tbl_name WHERE (Schlüssel1 = 10 ODER Schlüssel2 = 20) UND Nicht-Schlüssel = 30;
Wählen Sie * aus t1, t2, wobei (t1.key1 in (1,2) oder t1.key2 wie 'Wert%') und t2.key1 = t1.some_col;
WÄHLEN SIE * AUS t1, t2, WO t1.key1 = 1 UND (t2.key1 = t1.some_col ODER t2.key2 = t1.some_col2);

Für Index Merge gelten die folgenden bekannten Einschränkungen:

1. Wenn die Abfrageanweisung eine komplexe WHERE-Klausel mit starker AND/OR-Verschachtelung enthält und MySQL nicht den besten Plan auswählt, können Sie versuchen, die folgende Bezeichnerkonvertierung zu verwenden:

(x UND y) ODER z => (x ODER z) UND (y ODER z)
(x ODER y) UND z => (x UND z) ODER (y UND z)

2. Die Indexzusammenführung ist auf die Volltextindizierung nicht anwendbar.

In der Ausgabe der EXPLAIN-Anweisung werden Indexzusammenführungen als „index_merge“ in der Spalte „Typ“ angezeigt. In diesem Fall enthält die Spalte „Schlüssel“ die Liste der verwendeten Indizes.
Die Zugriffsmethode zum Zusammenführen von Indizes verfügt über mehrere Algorithmen, die im Feld „Extra“ der Ausgabe der EXPLAIN-Anweisung angezeigt werden:

Verwenden von „intersect(...)“
Mit union(...)
Verwenden von sort_union(...)

Diese Algorithmen werden weiter unten ausführlicher beschrieben. Der Optimierer wählt zwischen verschiedenen Indexzusammenführungsalgorithmen und anderen Zugriffsmethoden basierend auf Kostenschätzungen der verschiedenen verfügbaren Optionen.

Index Merge Intersection-Algorithmus

Der Index Merge Intersection-Algorithmus führt gleichzeitige Scans aller verwendeten Indizes durch und erstellt die Schnittmenge der Zeilenfolge, die aus den zusammengeführten Index-Scans erhalten wurde.
Dieser Algorithmus funktioniert, wenn die WHERE-Klausel in mehrere Bereichsbedingungen für verschiedene Indexschlüssel umgewandelt wird, die durch AND verbunden sind, und die Bedingungen eine der folgenden sind:

1. Bei dieser Form des N-teiligen Ausdrucks umfasst der Index genau N Felder (alle Indexfelder werden abgedeckt), N>=1, wenn N größer als 1 ist, handelt es sich um einen zusammengesetzten Index:

key_part1 = const1 UND key_part2 = const2 ... UND key_partN = constN.

2. Jede Bereichsbedingung für den Primärschlüssel der InnoDB-Tabelle.

Beispiel:

Wählen Sie * aus innodb_table
Wobei Primärschlüssel < 10 und Schlüsselspalte1 = 20 ist;
SELECT * FROM Tabellenname
WO key1_part1 = 1 UND key1_part2 = 2 UND key2 = 2;

Index Merge Union-Algorithmus

Dieser Algorithmus ähnelt dem Index Merge Intersection-Algorithmus und ist anwendbar, wenn die WHERE-Klausel in mehrere Bereichsbedingungen für verschiedene, durch OR verbundene Indexschlüssel umgewandelt wird und die Bedingungen eine der folgenden drei sind:

1. Bei dieser Form des N-teiligen Ausdrucks umfasst der Index genau N Felder (alle Indexfelder werden abgedeckt), N>=1, wenn N größer als 1 ist, handelt es sich um einen zusammengesetzten Index:

key_part1 = const1 UND key_part2 = const2 ... UND key_partN = constN.

2. Jede Bereichsbedingung für den Primärschlüssel der InnoDB-Tabelle.
3. Erfüllen Sie die Bedingungen des Index Merge Intersection-Algorithmus.

Beispiel:

WÄHLEN SIE * VON t1
WO Schlüssel1 = 1 ODER Schlüssel2 = 2 ODER Schlüssel3 = 3;
Wählen Sie * aus innodb_table
WO (Schlüssel1 = 1 UND Schlüssel2 = 2)
ODER (Taste3 = „foo“ UND Taste4 = „bar“) UND Taste5 = 5;

Index Merge Sort-Union-Algorithmus

Dieser Algorithmus funktioniert, wenn die WHERE-Klausel in mehrere Bereichsbedingungen für verschiedene, durch OR verbundene Indexschlüssel umgewandelt wird, entspricht jedoch nicht dem Index Merge Union-Algorithmus. Der Unterschied zwischen den Algorithmen „Index Merge Sort-Union“ und „Index Merge Union“ besteht darin, dass „Index Merge Sort-Union“ zuerst die Zeilen-IDs aller Zeilen abrufen und sortieren muss, bevor Zeilen zurückgegeben werden.

Beispiel:

SELECT * FROM Tabellenname
WO key_col1 < 10 ODER key_col2 < 20;
SELECT * FROM Tabellenname
WO (Schlüsselspalte1 > 10 ODER Schlüsselspalte2 = 20) UND Nichtschlüsselspalte = 30;

Dies ist das Ende dieses Artikels über die Verwendung der MySQL-Indexzusammenführung. Weitere relevante Inhalte zur MySQL-Indexzusammenführung 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:
  • mysql Index hinzufügen mysql wie man einen Index erstellt
  • Zusammenfassung der MySQL-Indextypen sowie Tipps und Vorsichtsmaßnahmen bei der Verwendung
  • So zeigen Sie Indizes in MySQL an, erstellen und löschen sie
  • MySQL Leistungsoptimierung Indexoptimierung
  • Analyse mehrerer Situationen, in denen MySQL-Indizes fehlschlagen
  • Vertieftes Verständnis basierend auf dem MySQL-Volltextindex
  • Häufige obligatorische Operationen in MySQL (z. B. obligatorische Indizes)
  • MySQL-Indexanalyse und -Optimierung

<<:  Senden Sie das Image über den Container DockerCommit und pushen Sie das Image DockerPush

>>:  Verwenden Sie einfaches jQuery + CSS, um einen benutzerdefinierten Tooltip für Tag-Titel zu erstellen

Artikel empfehlen

JavaScript Snake-Implementierungscode

In diesem Artikelbeispiel wird der spezifische Ja...

So handhaben Sie lange Daten bei der Anzeige in HTML

Bei der Anzeige langer Daten in HTML können Sie di...

Lösen Sie das Problem der unsicheren Docker x509-Registrierung

Nach der Installation von Docker trat beim Versuc...

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

Inhaltsverzeichnis Linux MySQL 5.5 auf MySQL 5.7 ...

Tutorial zu HTML-Tabellen-Tags (11): Horizontales Ausrichtungsattribut ALIGN

In horizontaler Richtung können Sie die Ausrichtu...

MySQL Server 8.0.13.0 Installations-Tutorial mit Bildern und Text

Installieren Sie 8.0.13 basierend auf MySQL 6.1.3...

W3C Tutorial (5): W3C XML Aktivitäten

XML dient der Beschreibung, Speicherung, Übertrag...

Beispiel einer Skriptmethode für die Bindung von Linux-Dualnetzwerkkarten

Bei der Bedienung und Konfiguration von Linux wir...

Informationen zum CSS-Floating und zum Aufheben des Floatings

Definition von Float Setzt das Element aus dem no...

Detaillierte Erklärung der Javascript-Grundlagenschleife

Inhaltsverzeichnis Zyklus für für-in für-von währ...

JavaScript zum Erzielen von Feuerwerkseffekten (objektorientiert)

In diesem Artikel wird der spezifische Code für J...