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

Les index seront-ils utilisés si vous interrogez un sous-ensemble des colonnes de l'index ?

La documentation MySQL explique bien le fonctionnement des index multi-colonnes ici .

En général, l'index peut être utilisé pour un where clause quand un certain nombre de colonnes sur le le plus à gauche côté de l'indice ont des conditions d'égalité. Votre where les clauses utilisent les colonnes suivantes :

  • c1, c2
  • c1, c2, c3, c4
  • c1, c2
  • c1, c2, c5

Tout index commençant par les colonnes c1 et c2 serait normalement utilisé pour ces requêtes. MySQL peut appliquer d'autres conditions à l'utilisation de l'index, telles que la sélectivité. Autrement dit, si c1 et c2 ont des valeurs constantes (par exemple), l'utilisation d'un index ne profitera pas à la requête.

Pour optimiser toutes ces combinaisons, vous pouvez créer deux index :c1, c2, c3, c4 et c2, c1, c5 . La raison de l'échange de c1 et c2 dans le deuxième index est donc vous pourriez gérer les requêtes où la condition est sur c2 mais pas c1 , ainsi que l'inverse.