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

O MySQL pode usar índices quando há OR entre as condições?


O plano de consulta para o OR maiúsculas e minúsculas parecem indicar que MySQL está de fato usando índices, então evidentemente sim, pode fazer, pelo menos neste caso. Isso parece totalmente razoável, porque há um índice em seen e id é o PK.

Se "explicações lógicas e razoáveis" são contrariadas pela realidade, então é seguro assumir que a lógica é falha ou que as explicações estão erradas ou inaplicáveis. O desempenho é notoriamente difícil de prever; o teste de desempenho é essencial onde a velocidade é importante.

Você deve usar aquele que testa mais rápido na entrada que modela adequadamente o que o programa verá em uso real.

Observe também, no entanto, que suas duas consultas não são semanticamente equivalentes:se a linha com id = 5204 também tem seen = 3 então o OR a consulta retornará uma vez, mas o UNION ALL query irá devolvê-lo duas vezes. É inútil escolher entre o código correto e o código incorreto em qualquer base que não seja qual é o correto.