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

Allgemeine Überlegungen zum Erstellen eines Hadoop 3.2.0-Clusters

Ein Port ändert sich In Version 3.2.0 beträgt der...

Stellen Sie einen Varnish-Cache-Proxyserver basierend auf Centos7 bereit

1. Lackübersicht 1. Einführung in Varnish Varnish...

Zusammenfassung der Ausführungsprobleme zwischen MySQL Max und Where

Ausführungsproblem zwischen MySQL Max und Where S...

Vue implementiert eine Scroll-Ladetabelle

Inhaltsverzeichnis Ergebnisse erzielen Wissensres...

CSS steuert den Abstand zwischen Wörtern durch die Eigenschaft „letter-spacing“

Eigenschaft „letter-spacing“ : Vergrößern oder ve...

MySQL startet langsames SQL und analysiert die Ursachen

Schritt 1. Aktivieren Sie die langsame MySQL-Abfr...

So verstehen Sie das Ref-Attribut von React genau

Inhaltsverzeichnis Überblick 1. Erstellen eines R...

Beispiel zur Optimierung der MySQL-Einfügeleistung

MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...

js, um einen coolen Feuerwerkseffekt zu erzielen

In diesem Artikel finden Sie den spezifischen Cod...

Die Rolle und Öffnung des MySQL-Protokolls für langsame Abfragen

Vorwort Das MySQL Slow Query Log ist ein Protokol...