Dokumentacja MySQL dobrze radzi sobie z wyjaśnieniem, jak działają indeksy wielokolumnowe tutaj .
Ogólnie rzecz biorąc, indeks może być używany dla where
klauzula, gdy jakaś liczba kolumn na lewej strona indeksu ma warunki równości. Twój where
klauzule używają następujących kolumn:
- c1, c2
- c1, c2, c3, c4
- c1, c2
- c1, c2, c5
Dowolny indeks zaczynający się od kolumn c1
i c2
normalnie będzie używany do tych zapytań. MySQL może zastosować inne warunki do korzystania z indeksu, takie jak selektywność. To znaczy, jeśli c1
i c2
mają stałe wartości (na przykład), wtedy użycie indeksu nie przyniesie korzyści zapytaniu.
Aby zoptymalizować wszystkie te kombinacje, możesz utworzyć dwa indeksy:c1, c2, c3, c4
i c2, c1, c5
. Powód zamiany c1
i c2
w drugim indeksie jest tak, że możesz obsłużyć zapytania, w których warunek jest na c2
ale nie c1
, a także na odwrót.