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

Index multiples MySQL vs index multi-colonnes pour la recherche

Vous devez comprendre que dans MySQL (dans le cas d'InnoDB), il n'utilise que le préfixe le plus à gauche de vos index. Donc, si l'index est dans Field1 + Field2, interroger avec uniquement Field2 dans WHERE ne peut pas utiliser l'intégralité de l'index.

Et si Field1 + Field2 + Field3 est l'index, une requête avec seulement Field1 & Field3 dans la même chose se produirait.

Option 1

Vous devrez créer un index distinct pour chaque scénario de recherche si vous souhaitez optimiser chaque recherche. Cependant, si les tables sont volumineuses, les index deviendraient également extrêmement volumineux. Si ces requêtes de recherche sont effectuées très souvent, cela en vaudrait la peine.

Option 2

Vous pouvez utiliser une astuce astucieuse si vos recherches ont une faible sélectivité (c'est-à-dire le sexe) en plaçant les colonnes de faible sélectivité tout à fait à gauche et en utilisant Gender IN(M, F) pour l'inclure dans WHERE clause avec les autres colonnes pour utiliser l'intégralité de l'index.