Heim  >  Artikel  >  Datenbank  >  Unter welchen Umständen schlägt der MySQL-Index fehl?

Unter welchen Umständen schlägt der MySQL-Index fehl?

青灯夜游
青灯夜游Original
2020-10-09 12:36:1617956Durchsuche

Mehrere Fälle von MySQL-Indexfehlern: 1. Wenn eine Bedingung vorliegt oder vorhanden ist, wird sie nicht verwendet, auch wenn eine Bedingung mit einem Index vorliegt. 2. Bei mehrspaltigen Indizes, wenn der erste Teil nicht verwendet wird , der Index wird nicht verwendet; 3. Die Abfrage beginnt mit %, und der Index ist ungültig. 4. Wenn der Feldtyp eine Zeichenfolge ist, werden die Daten in der Bedingung nicht in Anführungszeichen gesetzt.

Unter welchen Umständen schlägt der MySQL-Index fehl?

(Empfohlenes Tutorial: MySQL-Video-Tutorial)

Der Index wird nicht immer wirksam. Beispielsweise führen die folgenden Situationen dazu, dass der Index fehlschlägt:

1 . Wenn die Bedingung vorhanden ist, wird dieser nicht verwendet, selbst wenn ein bedingter Index vorhanden ist (deshalb sollten Sie so wenig wie möglich verwenden). : Wenn Sie or verwenden möchten, können Sie auch einen Index zu jeder Spalte in der Bedingung oder hinzufügen

 2. Bei mehrspaltigen Indizes, wenn es nicht der erste ist Teil verwendet, der Index wird nicht verwendet. 3. Die Like-Abfrage basiert auf: Wenn sie mit % beginnt, ist der Index ungültig gültig. 4. Wenn der Spaltentyp ein String ist, müssen die Daten in Anführungszeichen gesetzt werden, andernfalls wird kein Index verwendet sql Schätzungen zufolge ist die Verwendung eines vollständigen Tabellenscans schneller als die Verwendung eines Index. Überprüfen Sie außerdem die Verwendung des Index. Je höher, desto besser, desto höher die Anzahl Abfragen mit dem Index handler_read_rnd_next: Je höher der Wert, desto ineffizient ist die Abfrage

1) Es gibt keine Abfragebedingung oder die Abfragebedingung ist nicht indiziert

2 ) Die führende Spalte ist nicht indiziert Wird in den Abfragebedingungen verwendet

3) Die Anzahl der Abfragen ist der Großteil der großen Tabelle, die mehr als 30 % betragen sollte.

4) Der Index selbst ist ungültig

5) Die Abfragebedingung verwendet eine Funktion für die Indexspalte oder führt Operationen für die Indexspalte aus. Die Operationen umfassen (+, -, *, /,! usw.) Fehlerbeispiel: * aus Test auswählen, wobei ID-1=9; Richtiges Beispiel: * aus Test auswählen, wobei ID=10; 7) Aufforderung, den Index nicht zu verwenden

8) Die Statistiken sind unwirklich

9) Die CBO-Berechnung kostet zu viel, um sie zu indexieren. Tatsächlich umfasst es auch die obige Situation, was bedeutet, dass der von der Tabelle belegte Block kleiner als der Index ist.




10) Implizite Konvertierung führt zu Indexfehlern. Dies ist auch ein Fehler, der in der Entwicklung häufig gemacht wird, da das Feld tu_mdn als varchar2(20) definiert ist as Der Zahlentyp wird mit der Where-Bedingung an Oracle übergeben, was dazu führt, dass der Index fehlschlägt: select * from test where tu_mdn=13333333333; Richtiges Beispiel: select * from test where tu_mdn='13333333333'

12 ) 1,<> 2,Separat>,<,(manchmal verwendet, manchmal nicht)

13,wie „%_“ mit dem Prozentzeichen davor

14, Tabelle nicht analysiert

15, zitieren Sie separat die Indexspalte, die nicht die erste Position im zusammengesetzten Index ist

16, wenn das Zeichenfeld eine Zahl ist, fügen Sie in der Where-Bedingung keine Anführungszeichen ein

17, für die Indexspaltenoperation muss

18 erstellt werden, nicht vorhanden

19, wenn die Variable die Zeitvariable und die Tabelle verwendet Feld verwendet die Datumsvariable oder umgekehrt.

20, B-Tree-Index wird nicht gelöscht, wenn er null ist, nicht null ist, wird gelöscht, Bitmap-Index wird gelöscht, wenn null ist, ist nicht null

21, gemeinsamer Index ist nicht null, da long as in Alle erstellten Indexspalten (in keiner bestimmten Reihenfolge) werden verwendet. Wenn sie null sind, müssen sie zusammen mit der ersten Spalte des Index verwendet werden. Wenn die erste Positionsbedingung des Index null ist, können andere indizierte Spalten verwendet werden sein ist null (muss aber sein, wenn alle Spalten null sind) oder = ein Wert; wenn die erste Position des Index = ein Wert ist, können andere Indexspalten in jeder Situation sein (einschließlich ist null = ein Wert), der Index In den beiden oben genannten Fällen wird alles gehen. Unter anderen Umständen wird es nicht gehen.

Das obige ist der detaillierte Inhalt vonUnter welchen Umständen schlägt der MySQL-Index fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn