Existe uma diferença entre emitir uma consulta e emitir duas consultas? Bem, eu certamente espero que sim. O mecanismo SQL está funcionando e faz o dobro do trabalho (de uma certa perspectiva) para duas consultas.
Em geral, analisar uma única consulta será mais rápido do que analisar uma consulta, retornando um conjunto de resultados intermediário e, em seguida, alimentando-o de volta para outra consulta. Há sobrecarga na compilação de consultas e na passagem de dados para frente e para trás.
Para esta consulta:
select *
from users u inner join
location l
on u.location = l.id
where u.location = 10;
Você quer um índice em
users(location)
e location(id)
. Eu quero apontar outra coisa. As consultas não são equivalentes. A consulta de comparação real é:
select l.*
from location l
where l.id = 10;
Você está usando a mesma coluna para
where
e o on
. Portanto, esta seria a versão mais eficiente e você deseja um índice em location(id)
.