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

So verwenden Sie Vue zum Implementieren von CSS-Übergängen und Animationen

Inhaltsverzeichnis 1. Der Unterschied zwischen Üb...

MySQL-Fall bei der Verwendungsbeispielanalyse

Zuerst erstellen wir die Datenbanktabelle: Tabell...

Der Unterschied zwischen JS-Pre-Parsing und Variablen-Promotion im Web-Interview

Inhaltsverzeichnis Was ist eine Voranalyse? Der U...

Rastersysteme im Webdesign

Bildung des Gittersystems Im Jahr 1692 war der fr...

So erstellen Sie eine Ansicht für mehrere Tabellen in MySQL

Erstellen Sie in MySQL eine Ansicht für zwei oder...

Lizenzschlüssel für VMware Workstation Pro 16 mit Nutzungs-Tutorial

VMware Workstation ist eine leistungsstarke virtu...

Tutorial zur MySQL-Optimierung: Große Paging-Abfrage

Inhaltsverzeichnis Hintergrund LIMIT-Optimierung ...

CentOS7 64-Bit-Installation MySQL Grafik-Tutorial

Voraussetzungen für die Installation von MySQL: I...

Methoden zur Verbesserung der Zugriffskontrollsicherheit im Linux-Kernel

Hintergrund Vor einiger Zeit half unser Projektte...

HTML realisiert Hotel-Screening-Funktion über Formular

<!doctype html> <html xmlns="http:/...