Qual a vantagem de eu fazer uma query assim:
select distinct p.descricao, e.nome from projeto p inner join empregado e inner join proj_emp pe on p.cod_p = pe.cod_p on e.cod_e = pe.cod_e and pe.data > '01/01/2002'
se eu posso fazer assim:
select distinct p.descricao, e.nome from projeto p, empregado e, proj_emp pe where p.cod_p = pe.cod_p and e.cod_e = pe.cod_e and pe.data > '01/01/2002'
Ou seja, qual a vantagem do INNER JOIN??
Pelo que eu sei, o INNER JOIN é bastante utilizado para evitar que condições importantes sejam esquecidas.
É aconselhável utilizar a cláusula INNER JOIN.
Vantagem nenhuma, o otimizador do Oracle por ex interpreta as duas consultas de maneira igual.
E vc pode fazer Left e Right Join na clausula Where utilizando (+)
É igual
Não tenho certeza, mas já ouvi dizer que no SQL SERVER consultas com ‘INNER JOIN’ tem melhor desempenho.
Na empresa em que eu trabalhava até o ano passado só se usava INNER JOIN para todo tipo de consulta.
Hmm… até agora nada…
Talvez quanto ao desempenho possa ter alguma diferença. Mas por enqto é uma suposição. Alguém mais tem algo a dizer??
Opa,
Esta questão de desempenho só é notada se o SGBD não tiver o analisador lexico, que otimiza as consultas, hoje a grande maioria já dispõem disso aí.
Bem pelo plano cartesiano, como é chamado a associação que não tem inner join é feito a seleção da seguinte forma:
suponha que temos a tabela cliente e pedido.
cliente
0001 Zé das coves
0002 Zé da esquina
pedido
Cliente Ordem de compra
00001 97778
00003 08776
Pronto… neste caso seria feito o resultado seria 8 as verificações de relacionamento, ou seja, cliente.id= pedido.cliente testado para cada um dos registro 2 vezes.
Já com o inner join é testado apenas 4 vezes onde o teste seria apenas um para dada registro.
Assim fica muito difícil, e nem sei se dá para entender, é bom e explicar isto rabiscando cada intereção.
:okok:
Nao fica difícil… estudei algebra relacional bimestre passado, e vi isso q vc descreveu. Mas se o SGBD otimizar as consultas, entao INNER JOIN fica obsoleto? Isso se aplica pro OUTER JOIN tb?
[quote]Pelo que eu sei, o INNER JOIN é bastante utilizado para evitar que condições importantes sejam esquecidas.
É aconselhável utilizar a cláusula INNER JOIN.[/quote]
isto é um bom motivo para você continuar usando inner join além da consulta ficar mais refinada visualmente.
:okok:
Hmm, vc acha? nao sei… por enqto eu acho q fica estranho. Ma vá… Isso é opinião… vlw…