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

MySQL:differenza tra `... ADD INDEX(a); ... AGGIUNGI INDICE(b);` e `... AGGIUNGI INDICE(a,b);`?

L'INDICE combinato è una combinazione dei tasti "a" e "b". Migliora notevolmente l'accesso se "a" o "a" E "b" fanno parte dell'espressione di ricerca.

Questo indice non è utile se fornisci solo "b" nelle tue istruzioni SQL.

Pertanto potrebbe essere utile fornire due indici diversi, ma dovrebbero utilizzare nomi diversi.

A seconda dei modelli di accesso, consiglierei un indice su "a" e "b" e un indice aggiuntivo su "b" se questo corrisponde alle tue esigenze.

Tieni presente che qualsiasi indice aggiuntivo rallenta il database su tutte le operazioni che modificano i dati. A volte è meglio tenere lontani alcuni indici. Normalmente è un buon consiglio NON UTILIZZARE indici su nessuna colonna di una tabella.

Un altro consiglio:per decidere se utilizzare un INDEX(a,b) o INDEX(b,a), dai un'occhiata alla distribuzione dei tuoi dati. Metti i valori con la maggiore diffusione di valori diversi nella prima colonna dell'indice per aumentare la selettività di quell'indice. Questo valore è normalmente basato sulla qualità del primo elemento dell'indice.

Ad esempio un indice sulle colonne NAME e SEX dovrebbe essere creato come INDEX(NAME, SEX) perché ci sono molti più nomi che sesso(i) diverso(i).