none
Inner Join x Where RRS feed

  • 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

    quinta-feira, 28 de agosto de 2008 18:47

Todas as Respostas

  • Olá Anderson,

     

    Se você escolher a primeira opção seria equivalente a 1KG de chumbo.

    Se você escolher a segunda opção seria equivalente a 1KG de algodão.

     

    Se o negócio é escolher a mais leve, qual você escolheria então ?

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 28 de agosto de 2008 19:03
  • 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.

     

    quinta-feira, 28 de agosto de 2008 19:10
  • 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

     

    quinta-feira, 28 de agosto de 2008 19:28
  • 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.

     

    quinta-feira, 28 de agosto de 2008 20:25