PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inner join versus fazer uma cláusula where in


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) .