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.