sql >> Base de Datos >  >> RDS >> Mysql

MySQL EXPLICAR:Usar índice vs. Usar condición de índice

Un ejemplo lo explica mejor:

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

Esta consulta EXPLICARÍA con 'Uso de índice' porque no necesita, en absoluto , para "golpear" la tabla myUsedCarInventory ya que el índice "Make and Year" "cubre" su necesidad con respecto a los elementos de la cláusula WHERE que pertenecen a esa tabla .

Ahora, imagina, mantenemos la consulta igual, pero agregando una condición en el color

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

Esta consulta probablemente EXPLICARÍA con 'Uso de la condición de índice' (lo 'probable', aquí es para el caso de que Toyota + año no se estime lo suficientemente selectivo, y el optimizador puede decidir simplemente escanear la tabla). Esto significaría que MySQL PRIMERO use el índice para resolver el Make + Year, y también tendría que buscar la fila correspondiente en la tabla, solo para las filas que cumplen las condiciones de Make + Year. Eso es lo que a veces se denomina "optimización pushdown ".