[firebase-br] RES: Resultado com INNER JOIN x LEFT JOIN

Marcelo Durães da Silva marceloduraes em terra.com.br
Seg Jun 26 20:33:51 -03 2006


Mas por incrivel que pareça no SQL Server o resultado usando LEFT JOIN é
mais lento do que usando combinação carteziana no where.

Essa informação eu colhi em uma Aula de SQL server na POS graduação de .NET
na UVV no Espírito Santo.


Marcelo Durães da Silva
Geo Terra - Tecnologia de Informação Ltda
Elpis Informática Ltda 

 

 


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Jeferson Oliveira
Enviada em: quinta-feira, 22 de junho de 2006 10:23
Para: FireBase
Assunto: Re: [firebase-br] Resultado com INNER JOIN x LEFT JOIN

Marcos,

Ao indicar um join com Left será realiza, para cada valor da tabela à
esquerda, uma pesquisa na tabela que está à direita e, portanto, somente à
tabela à direita precisa ser indexada. O que explica a utilização do índice
TBTIPOMOVIMENTOSAIDA_PK no segundo caso.
Inner e Right join, fazem o oposto: para cada valor da direita é feita uma
pesquisa na tabela à esquerda.
Já o índice TBMOVESTOQUE_DATAPRODUTO só foi utilizado devido ás condições
definidas na claúsula WHERE.

Ese comportamento é geral, e não específico do seu banco de dados.
Abaixo a sentença que utilizei para confirmar essa afirmação:

select Detalhe.RDB$CONSTRAINT_NAME as NomeFK,
       idxDetalhe.RDB$FIELD_NAME as CampoDetalhe from
RDB$RELATION_CONSTRAINTS Detalhe left join RDB$INDEX_SEGMENTS idxDetalhe
    on (idxDetalhe.RDB$INDEX_NAME = Detalhe.RDB$INDEX_NAME)

Abraço!
Jeferson Oliveira
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista