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

Webdesign-Tutorial (2): Über Nachahmung und Plagiat

<br />Im vorherigen Artikel habe ich die Sch...

Lösung zur Bereinigung des Docker-Festplattenspeichers

Vor einiger Zeit stieß ich auf das Problem, dass ...

Wie erreicht MySQL eine Master-Slave-Synchronisierung?

Die Master-Slave-Synchronisierung, auch Master-Sl...

CocosCreator ScrollView-Optimierungsreihe: Frame-Laden

Inhaltsverzeichnis 1. Einleitung 2. Analyse des f...

Einführung in die Verwendung gängiger Dockerfile-Befehle

Inhaltsverzeichnis 01 CMD 02 EINSTIEGSPUNKT 03 AR...

Designbeispiele für Dropdown-Menüs und Schiebemenüs

Ich habe viele Websites gefunden, die Dropdown- od...

HTML-Optimierung beschleunigt Webseiten

Offensichtliches HTML, verstecktes „öffentliches ...