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:
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. 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. 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. 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:
|
<<: Senden Sie das Image über den Container DockerCommit und pushen Sie das Image DockerPush
1. Laden Sie das Installationspaket herunter Das ...
Wenn nginx proxy_pass konfiguriert, ist der Unter...
Nachdem ich einige Artikel gelesen hatte, habe ic...
<br />Im vorherigen Artikel habe ich die Sch...
Wenn Sie beim Konfigurieren von proxy_pass in ngi...
Vor einiger Zeit stieß ich auf das Problem, dass ...
Die Master-Slave-Synchronisierung, auch Master-Sl...
Inhaltsverzeichnis 1. Einleitung 2. Analyse des f...
Das Auswahlelement erstellt ein Einzelauswahl- ode...
Vorwort Wenn es um Datenbanktransaktionen geht, f...
Docker-Version 1.13.1 Problemprozess Ein MySQL-Co...
Inhaltsverzeichnis 01 CMD 02 EINSTIEGSPUNKT 03 AR...
Ubuntu16.04: Pip installieren und deinstallieren ...
Ich habe viele Websites gefunden, die Dropdown- od...
Offensichtliches HTML, verstecktes „öffentliches ...