[firebase-br] JOIN x LEFT JOIN

Andrei Luís compuvale.software em gmail.com
Ter Jul 20 15:50:05 -03 2010


Josauro,

Não sei a parte técnica de porque a demora, mas no resultado dos dois
selects, a diferença está no tratamento dos registros que não forem
encontrados no join. O join traz apenas os registros que satisfazem o
vínculo, enquanto o left join traz todos os registros da tabela da
esquerda (a que está depois do from), retornando null nos campos que
não forem encontrados na tabela que está no join.

Ex.

Tabela1
codcli  data     nrcontrole
1         20/07     10
2         20/07     15
3         20/07     20
4         20/07     30
5         20/07     40


Tabela2
codcli  nome
1         fulano
2         beltrano
3         sicrano


SELECT tabela1.codcli, tabela1.data, tabela1.nrcontrole, tabela2.nome
FROM TABELA1
JOIN TABELA2 ON (TABELA1.CAMPO  = TABELA2.CODIGO)

codcli    data   nrcontrole   nome
1         20/07     10            fulano
2         20/07     15            beltrano
3         20/07     20            sicrano



SELECT tabela1.codcli, tabela1.data, tabela1.nrcontrole, tabela2.nome
FROM TABELA1
LEFT JOIN TABELA2 ON (TABELA1.CAMPO  = TABELA2.CODIGO)

codcli    data   nrcontrole   nome
1         20/07     10            fulano
2         20/07     15            beltrano
3         20/07     20            sicrano
4         20/07     30            <null>
5         20/07     40            <null>

[]s
Andrei




Em 20 de julho de 2010 15:25, Josauro S.J. <josauro em casasoft.inf.br> escreveu:
> Tenho uma dúvida que não esta fazendo sentido.....
>
> Na junção de 2 tabelas onde a relação de registros é 1 x 1, se uso Left Join
> é muito mais demorado e o volume de registros lidos tambem é maior do que se
> usar apenas Join, não deveria ser no máximo igual pois se é 1 x 1 qual a
> diferença, apenas se for algo do FB como trata essa questão
>
> SELECT CAMPOS
> FROM TABELA1
> LEFT JOIN TABELA2 ON (TABELA1.CAMPO  = TABELA2.CODIGO)
>
> (* Lento e le muito mais registro TABELA1 (pelo log do ibexpert).
>
>
> SELECT CAMPOS
> FROM TABELA1
> JOIN TABELA 2 ON (TABELA1.CAMPO  = TABELA2.CODIGO)
>
> (* Rápido e le muito menos registro TABELA1 (pelo log do ibexpert).
>
> O número de registros retornados é igual em ambos os casos, somente a
> estatistica de leitura, que ocorre na tabela1 é maior com LEFT).
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>




Mais detalhes sobre a lista de discussão lista