Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) JOINS VERSUS WHERE


athila

Pergunta

Boa noite a todos,

Alguém aí saberia me dar uma resposta com bom embasamento teórico sobre porque usar joins ao invés de where nas consultas sql? Já lí bastante coisa. Ví muitas restas dizendo que o código fica mais limpo; também acho. Outras pessoas disseram que a performance é melhor com join, mas não souberam dizer porque.

Abraços

Áthila Rocha

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'athila' !

Sua pergunta do jeito que foi feita gera um monte de possibilidades, porque JOIN é uma coisa (relacionamento entre tabelas) e WHERE é outra (filtro).

Pelo que entendi, sua pergunta está relacionada a forma como um relacionamento entre tabelas é montado.

Partindo disso vamos aos pontos:

Exemplo 1

SELECT t1.nome, t2.salario 
FROM funcionarios AS t1, info AS t2
WHERE t1.nome = t2.nome;
Exemplo 2
SELECT t1.nome, t2.salario 
FROM funcionarios AS t1
INNER JOIN info AS t2 ON t1.nome = t2.nome;

O manual do MySQL informa que

A condicional ON é qualquer condição da forma que pode ser usada em uma cláusula WHERE
INNER JOIN e , (vírgula) são semanticamente equivalentes na ausência da condição join: ambos

produzirão um produto Cartesiano entre as tabelas especificadas. (isto é, todos os registros

na primeira tabela serão ligados com todos os registros na segunda tabela).

Com base no exposto acima, pode-se concluir que não há diferença na performance dos códigos.

O exemplo 2 gerou um código mais limpo.

O exemplo 1 só pode ser usado como INNER JOIN. LEFT JOIN, RIGHT JOIN, não são incluídos neste tipo de comparação. Deve-se, neste caso, usar a sintaxe do exemplo 2 substituindo o INNER JOIN por LEFT JOIN ou RIGHT JOIN.

Ver Seção 6.4.1.1. Sintaxe JOIN do manual do MySQl versão 4.1 (tradução em Português), para mais detalhes.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Denis,

Realmente o propósito dos dois comandos são diferentes; mas às vezes pode-se usar qualquer um deles na junção de tabelas (caso seja uma junção do tipo inner). Realmente acho mais elegante nestes casos o uso do JOIN, é semanticamente mais correto.

[]'s

Áthila

Editado por Denis Courcy
Correção do meu nome
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...