Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL EXPLAIN:Usando índice vs. Usando condição de índice


Um exemplo explica melhor:
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 EXPLICARIA com 'Usando Índice' porque não precisa, de forma alguma , para "atingir" a própria tabela myUsedCarInventory já que o índice "Make and Year" "cobre" sua necessidade com relação aos elementos da cláusula WHERE que pertencem a essa tabela .

Agora, imagine, mantemos a consulta igual, mas para a adição de uma condição na cor
...
WHERE Make = 'Toyota' AND Year > '2006' AND Color = 'Red'

Essa consulta provavelmente EXPLICARIA com 'Usando condição de índice' (o 'provável', aqui é para o caso em que Toyota + ano não seria estimado como seletivo o suficiente, e o otimizador pode decidir apenas varrer a tabela). Isso significaria que o MySQL PRIMEIRO use o índice para resolver o Make + Year, e teria que pesquisar a linha correspondente na tabela também, somente para as linhas que atendem às condições Make + Year. Isso é o que às vezes é chamado de "otimização push down ".