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
Ein Port ändert sich In Version 3.2.0 beträgt der...
1. Docker-Installation und -Einstellungen #Instal...
1. Lackübersicht 1. Einführung in Varnish Varnish...
Ausführungsproblem zwischen MySQL Max und Where S...
Inhaltsverzeichnis Ergebnisse erzielen Wissensres...
Eigenschaft „letter-spacing“ : Vergrößern oder ve...
Die Funktion DATE_ADD() addiert einem Datum ein a...
Schritt 1. Aktivieren Sie die langsame MySQL-Abfr...
Inhaltsverzeichnis Überblick 1. Erstellen eines R...
MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...
In diesem Artikel finden Sie den spezifischen Cod...
Eine interessante Entdeckung: Es gibt eine Tabell...
Ohne weitere Umschweife werde ich den Code direkt...
Vorwort Das MySQL Slow Query Log ist ein Protokol...
//MySQL-Anweisung SELECT * FROM `MyTable` WHERE `...