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

L'index composé MySQL n'est pas utilisé

Réponse courte :vous seriez en mesure d'utiliser l'index plus efficacement ici si votre clé était (accountcode, calldate) au lieu de (calldate, accountcode).

La meilleure façon de comprendre le problème est de considérer les clés multi-colonnes comme étant une concaténation des différentes colonnes. Par exemple, si la colonne 1 avait les valeurs 'A, B, C, D' et la colonne 2 'W,X,Y,Z', vous construiriez un index sur 'A-W, B-X, C-Y, D-Z' etc. et mettre tout de ceux-ci dans un arbre B.

Pour effectuer une requête de plage, vous recherchez le premier successeur de l'extrémité inférieure de la plage et itérez jusqu'à ce que vous dépassiez la plage supérieure. Cela signifie que vous ne pouvez utiliser efficacement l'index que pour effectuer une requête de plage sur un suffixe de la clé.