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.