Mysql
 sql >> Database >  >> RDS >> Mysql

Gli indici verranno utilizzati se si interroga un sottoinsieme delle colonne dell'indice?

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.