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

MySQL EXPLAIN :Utiliser l'index ou utiliser la condition d'index

Un exemple l'explique le mieux :

SELECT Year, Make --- possibly more fields and/or from extra tables
FROM myUsedCarInventory
WHERE Make = 'Toyota' AND Year > '2006'

Assuming the Available indexes are:
  CarId
  VIN
  Make
  Make and Year

Cette requête EXPLAIN avec 'Using Index' car elle n'en a pas besoin, du tout , pour "atteindre" la table myUsedCarInventory elle-même puisque l'index "Marque et année" "couvre" son besoin en ce qui concerne les éléments de la clause WHERE qui se rapportent à cette table .

Maintenant, imaginez, on garde la même requête, mais pour l'ajout d'une condition sur la couleur

...
WHERE Make = 'Toyota' AND Year > '2006' AND Color = 'Red'

Cette requête s'expliquerait probablement avec "Utilisation de la condition d'index" (le "probable", ici, est pour le cas où Toyota + année ne serait pas estimée comme étant suffisamment sélective, et l'optimiseur peut décider de simplement scanner la table). Cela signifierait que MySQL serait PREMIER utiliser l'index pour résoudre le Make + Year, et il devrait également rechercher la ligne correspondante dans le tableau, uniquement pour les lignes qui satisfont aux conditions Marque + Année. C'est ce qu'on appelle parfois "optimisation push down ".