1. Führende Fuzzy-Abfragen können keinen Index verwenden (wie „%XX“ oder „%XX%“) Wenn es eine Spalte mit den Codewerten ‚AAA‘, ‚AAB‘, ‚BAA‘, ‚BAB‘ gibt und die Bedingung mit dem Code ‚%AB‘ erfüllt ist, Es ist unscharf, daher kann die Reihenfolge des Index nicht verwendet werden. Sie müssen nacheinander suchen, um festzustellen, ob die Bedingungen erfüllt sind. Dies führt zu einem vollständigen Index-Scan oder einem vollständigen Tabellen-Scan Beschreibung. Wenn die Bedingung darin besteht, dass Code wie 'A % ' ist, können Sie nach der Position des Codes suchen, der mit A im Code beginnt, und wenn Sie auf den Code stoßen, der mit B beginnt Wenn keine Daten vorhanden sind, können Sie die Suche beenden, da die nachfolgenden Daten definitiv nicht den Anforderungen entsprechen. Auf diese Weise können Sie die Vorteile des Index nutzen. 2. Wenn es sich um einen kombinierten Index handelt und Sie nicht in der Reihenfolge der Indizes suchen, z. B. den Index an der dritten Position direkt verwenden und die Indizes an der ersten und zweiten Position ignorieren, wird eine vollständige Tabellenabfrage ausgeführt. Der Index ist c1,c2,c3,c4 Die Ergebnisse in der obigen Abbildung zeigen, dass die direkte Verwendung von c3 eine vollständige Tabellenabfrage ist und der Index nicht verwendet werden kann. Daher ist die Voraussetzung für die Verwendung des Index für das Feld c3, dass sowohl die Felder c1 als auch c2 Indizes verwenden. 3. Es gibt ein "oder" in der Bedingung Vermeiden Sie möglichst die Verwendung von oder zum Verbinden von Bedingungen in der Where-Klausel. Andernfalls verzichtet die Engine auf die Verwendung des Index und führt einen vollständigen Tabellenscan durch, beispielsweise: wähle die ID aus t, wobei num=10 oder num=20 Sie können wie folgt abfragen: wähle ID aus t, wo num=10, vereine alles, wähle ID aus t, wo num=20 4. Der Index kann keine Nullwerte speichern. Wenn also die Where-Bedingung ein Nullwerturteil für das Feld trifft, verlässt die Datenbank den Index und führt eine vollständige Tabellenabfrage aus, wie z. B. wähle ID aus t, wobei Num null ist Sie können für „num“ einen Standardwert von 0 festlegen, um sicherzustellen, dass in der Spalte „num“ der Tabelle kein Nullwert vorhanden ist, und diese dann folgendermaßen abfragen: wähle ID aus t, wobei num=0 a. Einspaltige Indizes können keine Nullwerte speichern, und zusammengesetzte Indizes können keine Werte speichern, die alle Null sind. b. Bei Abfragen mit der Bedingung „is null“ kann der Index nicht verwendet werden und es kann nur die gesamte Tabelle gescannt werden. Warum können Indexspalten keine Nullwerte speichern? a. Indizes sind geordnet. Wenn ein NULL-Wert in einen Index eintritt, gibt es keine Möglichkeit zu bestimmen, wo er platziert werden soll. (Das Erstellen eines Baums mit Indexspaltenwerten erfordert zwangsläufig viele Vergleichsvorgänge. Nullwerte sind unsichere Werte, die nicht verglichen werden können, und es ist unmöglich zu bestimmen, ob Null an der Blattknotenposition des Indexbaums erscheint.) 5. Versuchen Sie, die Verwendung des Operators != oder <> in der Where-Klausel zu vermeiden, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt. 6. „in“ und „not in“ sollten ebenfalls mit Vorsicht verwendet werden, da es sonst zu einem vollständigen Tabellenscan kommt, wie zum Beispiel: Wähle ID aus t, wobei Num in (1,2,3) ist Für kontinuierliche Werte verwenden Sie „between“ statt „in“: wähle id aus t, wobei num zwischen 1 und 3 liegt 7. Vermeiden Sie nach Möglichkeit die Ausführung von Funktionsoperationen auf Feldern in der Where-Klausel, da dies dazu führt, dass die Engine die Verwendung von Indizes aufgibt und einen vollständigen Tabellenscan durchführt. wie: –id, deren Name mit abc beginnt wähle die ID aus t, wobei Teilzeichenfolge (Name, 1, 3) = "abc" ist 8. Versuchen Sie, Ausdrucksoperationen auf Feldern in der Where-Klausel zu vermeiden, da dies dazu führt, dass die Engine die Verwendung von Indizes aufgibt und einen vollständigen Tabellenscan durchführt. wie: wähle ID aus t, wobei num/2=100 Sollte geändert werden in: wähle ID aus t, wobei Num=100*2 Zusammenfassen Damit ist dieser Artikel über verschiedene Situationen, in denen MySQL-Indizes fehlschlagen, abgeschlossen. Weitere Informationen zu MySQL-Indexfehlern finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: html+css+js zur Realisierung der Funktion der Fotovorschau und des Bildhochladens
>>: Detaillierte Schritte zur Verwendung von AES.js in Vue
Vorwort Bei der tatsächlichen Verwendung der Date...
Beim Arbeiten mit Dateien im Linux-Terminal möcht...
Die kleinste Planungseinheit in k8s --- pod Im vo...
Manchmal erfordert die lokale Entwicklung das Deb...
Detaillierte Erläuterung des MySql-Beispiels für ...
Geben Sie der Zeit Zeit und lassen Sie die Vergan...
SQL-Fuzzy-Abfrageanweisung Die allgemeine Fuzzy-A...
Sortierwerkzeug Der Linux-Befehl „sort“ wird zum ...
Inhaltsverzeichnis Starten und Stoppen Datenbankb...
Inhaltsverzeichnis 1. Ergebnisse erzielen 2. Impl...
1. Installieren Sie die virtuelle Maschine Hyper-...
1. Einleitung Wenn ein Webprojekt auf unserem Lin...
Inhaltsverzeichnis brauchen: Wichtige Punkte: Anh...
Vorwort Im aktuellen JavaScript gibt es kein Konz...
1) Geltungsbereich: schreibgeschützt: Eingabe [Typ...