Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Werden Indizes verwendet, wenn Sie eine Teilmenge der Spalten des Index abfragen?

Die MySQL-Dokumentation erklärt sehr gut, wie mehrspaltige Indizes funktionieren hier .

Im Allgemeinen kann der Index für ein where verwendet werden -Klausel, wenn eine bestimmte Anzahl von Spalten ganz links steht Seite des Index haben Gleichheitsbedingungen. Ihr where -Klauseln verwenden die folgenden Spalten:

  • c1, c2
  • c1, c2, c3, c4
  • c1, c2
  • c1, c2, c5

Jeder Index, der mit den Spalten c1 beginnt und c2 würde normalerweise für diese Abfragen verwendet werden. MySQL kann andere Bedingungen für die Verwendung des Index anwenden, wie z. B. Selektivität. Das heißt, wenn c1 und c2 konstante Werte haben (zum Beispiel), dann wird die Verwendung eines Indexes der Abfrage nicht zugute kommen.

Um all diese Kombinationen zu optimieren, können Sie zwei Indizes erstellen:c1, c2, c3, c4 und c2, c1, c5 . Der Grund für das Austauschen von c1 und c2 im zweiten Index ist so, dass Sie könnten verarbeitet Abfragen, bei denen die Bedingung auf c2 steht aber nicht c1 , sowie umgekehrt.