Sub Select vs Join

SQL Server

SQL

23/11/2016

Qual é o mais pesado?

SELECT a.* FROM TableA a
WHERE a.status = 1
AND (SELECT b.id FROM TableB b WHERE b.id = a.id AND b.status = 1) = 1


ou

SELECT a.* FROM TableA a
WHERE a.status = 1
LEFT JOIN TableB b
WHERE b.id = a.id AND b.status = 1
Marcus Holloways

Marcus Holloways

Curtidas 0

Melhor post

Luiz Santos

Luiz Santos

23/11/2016

Marcus, isso não é uma regra, porque depende muito do tamanho das tabelas, indíces criados, etc... mas normalmente JOIN é mais lento que SUB SELECT.
Tanto que só se usa JOIN se você precisar retornar os campos de 2 ou mais tabelas.
Se não, se recomenda usar o SUB SELECT.

Grande abraço
GOSTEI 1

Mais Respostas

Alec Candia

Alec Candia

23/11/2016

Nesse teu exemplo, o JOIN.

Mas, como disse o Luiz Santos, depende do tamanho e critérios de filtragem e índice do SUB SELECT. Se for usado critérios demais numa cláusula WHERE por exemplo, além do tamanho da tabela e a quantidade de campos retornadas, pode ser mais em conta usar um JOIN.
GOSTEI 1
Marcus Holloways

Marcus Holloways

23/11/2016

Entendi pessoal.

Obrigado pelas respostas :D
GOSTEI 0
Fabio Parreira

Fabio Parreira

23/11/2016

Execute sua consulta com CTRL + L, e verifique o plano estimado de execução, nele você pode medir a performance e definir qual teve melhor desempenho.

Eu particularmente utilizo mais os joins. Sub-select mal aplicado pode acabar comprometendo a sua performance, então ao usá-lo tenha muito cuidado, mas como já foi dito anteriormente, cada caso é uma caso diferente.

Abraços.
GOSTEI 0
POSTAR