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.