La documentazione MySQL fa un buon lavoro nello spiegare come funzionano gli indici a più colonne qui .
In generale, l'indice può essere utilizzato per un where clausola quando un certo numero di colonne sull'più a sinistra lato dell'indice hanno condizioni di uguaglianza. Il tuo where le clausole utilizzano le seguenti colonne:
- c1, c2
- c1, c2, c3, c4
- c1, c2
- c1, c2, c5
Qualsiasi indice che inizia con le colonne c1 e c2 sarebbe normalmente utilizzato per queste query. MySQL può applicare altre condizioni all'utilizzo dell'indice, come la selettività. Cioè, se c1 e c2 hanno valori costanti (ad esempio), quindi l'utilizzo di un indice non gioverà alla query.
Per ottimizzare tutte queste combinazioni, puoi creare due indici:c1, c2, c3, c4 e c2, c1, c5 . Il motivo per lo scambio di c1 e c2 nel secondo indice è così che potresti gestire le query in cui la condizione è su c2 ma non c1 , così come il contrario.