Zusammenfassung der Wissenspunkte zum Abdecken von Indizes in MySQL

Zusammenfassung der Wissenspunkte zum Abdecken von Indizes in MySQL

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:
  • MySQL verwendet einen abdeckenden Index, um Tabellenrückgaben zu vermeiden und die Abfrage zu optimieren
  • Beispiele für die Verwendung von MySQL-Abdeckungsindizes
  • So verwenden Sie MySQL zur Abdeckung von Index- und Tabellenrückgabe
  • Detaillierte Erklärung des MySQL-Covering-Index
  • Fallstudie zur Leistungsoptimierung bei MySQL – einschließlich Indexfreigabe
  • Fallstudie zur Leistungsoptimierung von MySQL – einschließlich Index und SQL_NO_CACHE
  • Vorteile von MySQL-Abdeckungsindizes

<<:  JS-Version des Bildlupeneffekts

>>:  Automatische Dateisynchronisierung zwischen zwei Linux-Servern

Artikel empfehlen

Einige Tipps zum Website-Design

Tatsächlich haben wir in letzter Zeit viel über W...

Einige Vorschläge zur Verbesserung der Nginx-Leistung

Wenn Ihre Webanwendung nur auf einer Maschine läu...

HTML-Grundlagen - CSS-Stylesheets, Style-Attribute, Format- und Layoutdetails

1. Position : fest Gesperrte Position (relativ zu...

MySQL-Datenbanktabelle und Datenbankpartitionierungsstrategie

Lassen Sie uns zunächst darüber sprechen, warum w...

Tutorial zur SQL-Optimierung: IN- und RANGE-Abfragen

Vorwort In „High Performance MySQL“ wird erwähnt,...

Ausführliche Erklärung zur Docker-Maschine

Unterschiede zwischen Docker und Docker Machine D...

So reduzieren Sie den Speicherverbrauch und die CPU-Auslastung von Webseiten

Manche Webseiten erscheinen möglicherweise nicht ...

Tutorial zur Docker-Installation in einer Linux-Umgebung

1. Installationsumgebung Docker unterstützt die f...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel werden die Installations- und K...

JavaScript realisiert den Effekt der mobilen Modalbox

In diesem Artikelbeispiel wird der spezifische Ja...