Wenn ein Index die Werte aller abzufragenden Felder enthält (oder abdeckt), wird er als „ überdeckender Index “ bezeichnet. Das Abdecken von Indizes ist ein sehr leistungsfähiges Tool, das die Abfrageleistung erheblich verbessern kann. Es muss nur den Index lesen, anstatt die Daten. Es bietet die folgenden Vorteile: 1. Indexeinträge sind normalerweise kleiner als Datensätze, daher greift MySQL auf weniger Daten zu. 2. Indizes werden nach Wertgröße gespeichert, was weniger E/A erfordert als Datensätze mit wahlfreiem Zugriff. 3. Die Daten-Engine kann Indizes besser zwischenspeichern. MyISAM speichert beispielsweise nur Indizes zwischen. 4. Abdeckende Indizes sind für InnoDB besonders nützlich, da InnoDB Clustered-Indizes zur Organisation der Daten verwendet. Wenn der sekundäre Index die für die Abfrage erforderlichen Daten enthält, ist es nicht erforderlich, im Clustered-Index zu suchen. Limit: 1. Überdeckende Indizes sind nicht auf jeden Indextyp anwendbar. Der Index muss die Werte der Spalten speichern. 2. Hash- und Volltextindizes speichern keine Werte, daher kann MySQL nur BTree verwenden. 3. Verschiedene Speicher-Engines implementieren abdeckende Indizes unterschiedlich und nicht alle Speicher-Engines unterstützen abdeckende Indizes. 4. Wenn Sie einen überdeckenden Index verwenden möchten, achten Sie darauf, die erforderlichen Spalten aus dem SELECT-Listenwert auszuwählen. Verwenden Sie nicht SELECT *, da die Indexdatei zu groß wird und die Abfrageleistung nachlässt, wenn alle Felder gemeinsam indiziert werden. Wissenspunkterweiterung: 1. Zwei Durchgänge Die Implementierungsmethode besteht darin, zuerst die zu sortierenden Felder und die Zeigerinformationen abzurufen, die die relevanten Zeilendaten direkt lokalisieren können, und sie dann im festgelegten Speicher (festgelegt durch den Parameter sort_buffer_size) zu sortieren. Nachdem die Sortierung abgeschlossen ist, werden die erforderlichen Spalten erneut über die Zeilenzeigerinformationen abgerufen. Hinweis: Dieser Algorithmus wird vor 4.1 verwendet. Er muss zweimal auf die Daten zugreifen. Insbesondere der zweite Lesevorgang führt zu einer großen Anzahl zufälliger E/A-Vorgänge. Andererseits ist der Speicheraufwand gering 2. Single-Pass-Algorithmus Dieser Algorithmus nimmt alle benötigten Spalten auf einmal heraus, sortiert sie im Speicher und gibt die Ergebnisse direkt aus. Hinweis: Dieser Algorithmus wird seit MySQL 4.1 verwendet. Dadurch wird die Anzahl der E/A-Vorgänge verringert und die Effizienz gesteigert, es entsteht jedoch auch ein großer Speicheraufwand. Wenn wir die Spalten entfernen, die nicht benötigt werden, wird der für den Sortiervorgang erforderliche Speicher stark verschwendet. In MySQL 4.1 und späteren Versionen können Sie durch Festlegen des Parameters max_length_for_sort_data steuern, ob MySQL den ersten oder den zweiten Sortieralgorithmus wählt. Wenn die Gesamtgröße aller abgerufenen großen Felder größer ist als die Einstellung „max_length_for_sort_data“, verwendet MySQL den ersten Sortieralgorithmus, andernfalls den zweiten. Um die Sortierleistung so weit wie möglich zu verbessern, bevorzugen wir natürlich die Verwendung des zweiten Sortieralgorithmus. Daher ist es sehr wichtig, in der Abfrage nur die erforderlichen Spalten abzurufen. Wenn sich ORDER BY beim Sortieren einer Join-Operation nur auf die Spalten der ersten Tabelle bezieht, führt MySQL eine Filesort-Operation für die Tabelle aus und führt dann den Join aus. In diesem Fall gibt EXPLAIN „Using filesort“ aus. Andernfalls muss MySQL eine temporäre Tabelle für den Abfrageergebnissatz generieren und eine Filesort-Operation ausführen, nachdem der Join abgeschlossen ist. In diesem Fall gibt EXPLAIN „Using temporary; Using filesort“ aus. Oben finden Sie den detaillierten Inhalt der Zusammenfassung der Wissenspunkte zu abdeckenden Indizes in MySQL. Weitere Informationen zu abdeckenden Indizes in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: JS-Version des Bildlupeneffekts
>>: Automatische Dateisynchronisierung zwischen zwei Linux-Servern
Inhaltsverzeichnis 1. Dies deutet darauf hin 2. Ä...
Tatsächlich haben wir in letzter Zeit viel über W...
Wenn Ihre Webanwendung nur auf einer Maschine läu...
1. Position : fest Gesperrte Position (relativ zu...
1 Hintergrund Vor kurzem habe ich untersucht, wie...
Private Docker-Imagebibliothek Private Docker-Bil...
Lassen Sie uns zunächst darüber sprechen, warum w...
Vorwort In „High Performance MySQL“ wird erwähnt,...
Unterschiede zwischen Docker und Docker Machine D...
Manche Webseiten erscheinen möglicherweise nicht ...
1. Installationsumgebung Docker unterstützt die f...
Die vollständigen Schritte zur Konfiguration des ...
In diesem Artikel werden die Installations- und K...
In diesem Artikelbeispiel wird der spezifische Ja...
Inhaltsverzeichnis Vorwort 1. bat führt js aus 2....