Heim  >  Artikel  >  Backend-Entwicklung  >  Bitte sagen Sie mir, wie ich nach „wo“ und „orderBy“ in MySQL auf den Index zugreifen kann.

Bitte sagen Sie mir, wie ich nach „wo“ und „orderBy“ in MySQL auf den Index zugreifen kann.

WBOY
WBOYOriginal
2016-08-29 08:50:521860Durchsuche

Ich habe jetzt wahrscheinlich eine Anforderung, nämlich eine Liste in der Datenbank abzufragen. Die Datentabelle sieht wahrscheinlich so aus:

A B C D E
1 1 1 2016-08-05 40
... ... ... ... ...

Und meine aktuelle SQL-Anweisung sieht wahrscheinlich so aus

<code class="sql">SELECT * FROM `TABLE` WHERE B = 1 AND C = 1 AND D = 2016-08-05 ORDER BY E DESC</code>

Wie soll ich in diesem Fall einen Index erstellen, damit er die Abfrage treffen kann? Ist es möglich, einen zusammengesetzten Index von index(['B', 'C', 'D', 'E']) zu erstellen?

Antwortinhalt:

Ich habe jetzt wahrscheinlich eine Anforderung, nämlich eine Liste in der Datenbank abzufragen. Die Datentabelle sieht wahrscheinlich so aus:

A B C D E
1 1 1 2016-08-05 40
... ... ... ... ...

Und meine aktuelle SQL-Anweisung sieht wahrscheinlich so aus

<code class="sql">SELECT * FROM `TABLE` WHERE B = 1 AND C = 1 AND D = 2016-08-05 ORDER BY E DESC</code>

Wie soll ich in diesem Fall einen Index erstellen, damit er die Abfrage treffen kann? Ist es möglich, einen zusammengesetzten Index von index(['B', 'C', 'D', 'E']) zu erstellen?

Theoretisch kann es so aufgebaut werden, da das Prinzip des linken Präfixes des Index die drei Felder B, C und D nacheinander trifft. Wenn das E-Feld jedoch nur zum Sortieren verwendet wird, wird der Index leider nicht verwendet kann nicht ausgelöst werden.
Denn wenn das Feld „Reihenfolge nach“ in der Where-Bedingung erscheint, wird der Index ohne Sortiervorgang verwendet. In anderen Fällen führt „Ordnen nach“ keine Sortiervorgänge aus.
Weitere Informationen finden Sie in diesem Artikel zur Analyse der Beziehung zwischen Orderby und Index
http://www.cnblogs.com/zhaoyl...

MySQL erzwingt den angegebenen Index FORCE INDEX

SELECT * FROM TABLE1 FORCE INDEX (FIELD1) ...
Die obige SQL-Anweisung verwendet nur den auf FELD1 erstellten Index, nicht die Indizes für andere Felder.

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