sql >> Base de Datos >  >> RDS >> PostgreSQL

Unión interna versus hacer una cláusula where in

¿Hay alguna diferencia entre emitir una consulta y emitir dos consultas? Bueno, ciertamente espero que sí. El motor SQL está funcionando, y hace el doble de trabajo (desde cierta perspectiva) para dos consultas.

En general, analizar una sola consulta será más rápido que analizar una consulta, devolver un conjunto de resultados intermedio y luego retroalimentarlo a otra consulta. Hay sobrecarga en la compilación de consultas y en el paso de datos de un lado a otro.

Para esta consulta:

select * 
from users u inner join
     location l
     on u.location = l.id 
where u.location = 10; 

Quiere un índice en users(location) y location(id) .

Quiero señalar algo más. Las consultas no son equivalentes. La consulta de comparación real es:

select l.*
from location l
where l.id = 10;

Está utilizando la misma columna para el where y el on . Por lo tanto, esta sería la versión más eficiente y desea un índice en location(id) .