Inquiridor
Inner Join x Where

Pergunta
-
Pessoal, em matéria de performance, o que vocês acham melhor?
Select Tabela1.Campo1 As Campo1, Tabela2.Campo2 As Campo2 From Tabela1 Inner Join Tabela2 On Tabela1.Campo1 = Tabela2.Campo1
ou
Select Tabela1.Campo1 As Campo1, Tabela2.Campo2 As Campo2 From Tabela1, Tabela2 Where Tabela1.Campo1 = Tabela2.Campo1
a opinião de vocês vai ser muito útil para mim...
valeu
Todas as Respostas
-
-
Boa Gustavo, hehe
Essa pegadinha é OLD AS SQL Server 6.5. Haha
Bem, como o Gustavo deu a entender, e como eu vejo as consultas, não há nenhuma diferença entre as duas formas, e não haveria diferenças de performance justamente por ser idênticas só mudando a forma de fazer o JOIN, uma pelo FROM e outra pelo WHERE.
Acredito que mesmo assim eu ficaria com a segunda opção por questões de identação e estruturação da consulta.
Segue link para um artigo que escrevi há um tempo atrás falando um pouco mais sobre os JOINs e mostrando as diferenças entre fazer as amarrações na cláusula FROM e na WHERE.
http://imasters.uol.com.br/artigo/6374/bancodedados/consultas_com_joins/
Qualquer dúvida estamos à disposição.
[ ]s.
-
Oi Thiago,
Eu queria ver a resposta (rs)...
O fato é que não há nenhuma diferença em desempenho sobre JOINs e cláusula WHERE. Se pegarmos as duas consultas e colocarmos para verificar o plano de execução, teremos exatamente o mesmo resultado.
Em todo o caso, eu acredito que JOINs são melhor que cláusula WHERE pelos seguintes pontos:
- São aderentes ao padrão ANSI92
- São menos poluentes (cláusula WHERE confunde o que é junção e o que é filtro)
- Tem possibilidades que o WHERE não tem (FULL OUTER JOIN por exemplo)
- Podem ter seu comportamento manipulado (Nested Loops, Merge Join)
- Não estão presos a sintaxes proprietárias (*=, =*, +=, =+, etc)
Um quilo de chumbo e um quilo de algodão tem o mesmo peso, mas entre transportar 1Kg de chumbo e 1Kg de algodão eu fico com o de chumbo, os dois tem o mesmo peso, mas o de chumbo é melhor de trabalhar. Por isso mesmo que opto pelos JOINs. Cláusula WHERE jamais...
[ ]s,
Gustavo
-
Gustavo, concordo contigo e também fico com os JOINs. Hehe
Acredito que por questões de indentação, além de ficar um pouco confuso caso tenhamos outros filtros na cláusula WHERE, é muito melhor e mais prático se o nosso colega utilizar a primeira consulta postada.
[ ]s.