Prinzip des MySQL-Indexfehlers

Prinzip des MySQL-Indexfehlers

1. Gründe für Indexfehler

Sehen wir uns zunächst die Situationen an, in denen die Suche die Ordnungsmäßigkeit des Index nicht nutzen kann.

Angenommen, ein Tabellentest hat vier Felder a, b, c und d und c ist der Primärschlüssel.

Erstellen Sie einen gemeinsamen Index (a,b) für die Felder a und b CREATE index idx_a_b on test(a,b) test(a,b); B+ tree joint index.JPG

Die Regel, die wir erhalten können, ist: Sortieren Sie zuerst nach Feld A von klein nach groß, und wenn Feld A gleich ist, sortieren Sie nach Feld B von klein nach groß;

Analysieren Sie die folgenden Situationen, um zu bestimmen, ob der Index ungültig wird und aus welchen Gründen:

Die Bedingung enthält nur das Feld b

wähle * aus Test, wobei b=2;

Indexfehler:

Natürlich wird beim Aufrufen der gesamte Text gescannt und der Index nicht verwendet. Da wir nur den Index des Felds b betrachten, der 2, 4, 1, 3, 4, 5 ist, können wir die Ordnungsmäßigkeit des Indexes nicht nutzen, um die Daten schnell zu lokalisieren.

Abfrage des Bereichs des Felds a:

Wählen Sie * aus dem Test, wobei a > 1 und b = 2 ist.


Indexfehler:

Es ist ersichtlich, dass der Index nicht vollständig ungültig ist, sondern dass der Index zunächst verwendet wird, um die Position von a zu lokalisieren. Weil die Schlüssellänge hier 4 ist und die Schlüssellänge des gemeinsamen Index 8 ist.

Abfrage des gleichen Wertes von Feld a und des Wertebereichs von Feld b:

Indexfehler:

Es ist ersichtlich, dass using index und key_len 8 ist, d. h., es werden die Indizes beider Felder verwendet. Dies entspricht auch der Regel der gemeinsamen Indexanordnung: Wenn die a-Felder gleich sind, werden die b-Felder der Reihe nach angeordnet.

Die oben genannten Situationen können wie folgt zusammengefasst werden: Die Nichteinhaltung des Prinzips der Übereinstimmung mit dem äußersten linken Präfix führt zu einem Indexfehler.

Das am weitesten links stehende Matching-Präfix stellt sicher, dass die Reihenfolge der Indexsortierung genutzt werden kann. Indem die Gleichheitsabfrage vorne und die Bereichsabfrage hinten platziert wird, wird die Funktion ausgenutzt, dass [bei Gleichheit der Präfixfelder die nachfolgenden Indexfelder sortiert werden], was in einem speziellen Sinne das Matching-Prinzip des am weitesten links stehenden Präfixes ist.

2. Sehen wir uns an, welche Situationen die Ordnungsmäßigkeit des Index zerstören.

- Führen Sie Funktionsoperationen auf Indexfeldern aus

Das Ausführen von Funktionsoperationen auf Indexfeldern, wie z. B. y=f(x), garantiert nicht, dass die erhaltenen Werte von y noch in Ordnung sind. In diesem Fall wird der Optimierer die Baumsuchfunktion aufgeben. Es ist jedoch nicht ausgeschlossen, dass der Optimierer sich dafür entscheidet, diesen Index zu scannen, wenn er feststellt, dass der Indexbaum viel kleiner als der Primärschlüsselindex ist.

- Implizite Typkonvertierung

Beim Vergleichen von Zeichenfolgen und Zahlen in MySQL werden die Zeichenfolgen in Zahlen umgewandelt. Das Wesentliche der impliziten Typkonvertierung besteht darin, die Funktion CAST() auf das Indexfeld anzuwenden. Das Prinzip ist das gleiche wie oben.

- Implizite Zeichenkodierungskonvertierung

Der Kern der Konvertierung der Zeichenfolgenkodierung besteht in der Verwendung CONVERT() .

3. Zusammenfassung

Der Grund für den Indexfehler liegt darin, dass der Optimierer feststellt, dass er die Ordnungsmäßigkeit des Index nicht nutzen kann. Daher sollten wir bei der Verwendung des Index versuchen, das Prinzip der Präfixübereinstimmung ganz links einzuhalten, die Bereichsabfrage am Ende zu platzieren und keine Fuzzy-Abfragen wie %like und %like% zu verwenden, um die Ordnungsmäßigkeit des Index optimal zu nutzen. In einigen Fällen gibt der Optimierer jedoch einfach die Suchfunktion des Indexbaums auf und kann sich dennoch für das Scannen des Index entscheiden.

Dies ist das Ende dieses Artikels über das Prinzip der MySQL-Index-Ungültigkeitserklärung. Weitere relevante Inhalte zur MySQL-Index-Ungültigkeitserklärung 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:
  • Detaillierte Erläuterung der MySQL-Datenbankindizes und Fehlerszenarien
  • Häufige Szenarien und Vermeidungsmethoden für Indexfehler in MySQL
  • Gemeinsame MySQL-Indexwirksamkeitsbedingungen und Indexungültigkeitsbedingungen
  • Mehrere Methoden zur Lösung des Problems des MySQL-Fuzzy-Abfrageindexfehlers
  • Teilen Sie 15 Szenarien, in denen MySQL-Indizes fehlschlagen

<<:  So implementieren Sie die Unschärfefunktion von DIV

>>:  Beheben Sie den Nginx-Fehler „504 Gateway Time-out“

Artikel empfehlen

jQuery manipuliert Cookies

Code kopieren Der Code lautet wie folgt: jQuery.c...

Vue-Implementierungsbeispiel mit Google Recaptcha-Verifizierung

In unserem aktuellen Projekt müssen wir die Googl...

JavaScript zum Erreichen eines einfachen Seiten-Countdowns

In diesem Artikelbeispiel wird der spezifische Ja...

Kurztipps für die Linux-Befehlszeile: So finden Sie eine Datei

Wir alle haben Dateien auf unseren Computern gesp...

So implementieren Sie den Dienststatus zur Nginx-Konfigurationserkennung

1. Überprüfen Sie, ob das Modul „Status prüfen“ i...

Docker-Image-Optimierung (von 1,16 GB auf 22,4 MB)

Inhaltsverzeichnis Der erste Schritt der Optimier...

Was soll ich tun, wenn ich die Quelldatei einer Webseite nicht anzeigen kann?

F: Wenn Sie Outlook oder IE verwenden, wird beim ...

Mycli ist ein unverzichtbares Tool für MySQL-Befehlszeilen-Enthusiasten

mycli MyCLI ist eine Befehlszeilenschnittstelle f...

Vue implementiert den Download von ZIP-Dateien

In diesem Artikelbeispiel wird der spezifische Co...

MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung

MySQL Binlog ist ein sehr wichtiges Protokoll in ...