Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Différence entre `... AJOUTER INDEX(a); ... AJOUTER INDEX(b);` et `... AJOUTER INDEX(a,b);`?

L'INDEX combiné est une combinaison des touches "a" et "b". Cela améliore considérablement l'accès si "a" ou "a" ET "b" font partie de l'expression de recherche.

Cet index n'est pas utile si vous ne fournissez que "b" dans vos instructions SQL.

Par conséquent, il peut être utile de fournir deux index différents - mais ils doivent utiliser des noms différents.

En fonction des modèles d'accès, je recommanderais un index sur "a" et "b" et un index supplémentaire sur "b" si cela correspond à vos besoins.

Veuillez garder à l'esprit que tout index supplémentaire ralentit la base de données sur toutes les opérations qui modifient les données. Parfois, il est préférable de garder certains indices à l'écart. C'est normalement un bon conseil de NE PAS UTILISER d'index sur aucune colonne d'une table.

Un autre conseil :pour décider si un INDEX(a,b) ou un INDEX(b,a) doit être utilisé, regardez la distribution de vos données. Placez les valeurs avec la plus grande dispersion de valeurs différentes dans la première colonne de l'indice pour augmenter la sélectivité de cet indice. Cette valeur est normalement basée sur la qualité du premier élément d'index.

Par exemple, un index sur les colonnes NAME et SEX doit être créé sous la forme INDEX(NAME, SEX) car il y a beaucoup plus de noms que de sexe(s) différent(s ?).