[firebase-br] Subselects ou Left Joins

Eduardo Jedliczka eduardo em gerasoft.com.br
Qui Maio 19 08:15:33 -03 2005


Marcel,

Nem sempre um Inner/Left/Right Join é mais rápido do que um Sub-Select...

Há vários casos (já fizemos muitos testes por aqui) que um sub-select gera
um Plan muito melhor... Este abaixo aparenta ser um destes, mas como não sei
qual é a composição do índice "Razao" então não posso opnar muito, E também
não sei qual a "grandeza" das tabelas, não dá para dizer se o plan escolhido
pelo FB é tão pior que o desejado...

Subselects, são mais perigosos (entenda - muito lentos) quando estão no
Where... Quando estão na lista de campos, o FB é bem espertinho...

[s]

==========================
Eduardo Jedliczka
Gerasoft Informática
Apucarana - Pr
==========================

----- Original Message ----- 
From: "Moked do Brasil - Marcel (Brazil)" <marcel em moked.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, May 18, 2005 4:26 PM
Subject: Re: [firebase-br] Subselects ou Left Joins


> No primeiro select por ele não estar trazendo os dados corretamento pode
ser
> por causa do Left Join pois isto implica que ele traga todos os dados do
> campo a esquerda independente do campo a direito tenta o inner join!!!
> E muito melhor um inner join, left join, right join do que uma SubQuery
pois
> a performance obtida na SubQuery é concerteza inferior a da performance
com
> Join.
>
> ----- Original Message ----- 
> From: "RAMJ SISTEMAS & CONSULTORIA" <jubrovolski em yahoo.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Wednesday, May 18, 2005 4:10 PM
> Subject: [firebase-br] Subselects ou Left Joins
>
>
> > Olá Pessoal
> >
> > Sei que este assunto já foi tratado aqui, mas estou num impasse.
> > Desenvolvi 3 sistemas grandes usando Left Joins para para o
relacionamento
> > entre as tabelas. Porém aprofundando mais meus conhecimentos, notei que
o
> > firebird não está usando o PLAN corretamente para selecionar o indice
> > correto para o retorno de dados.
> > Ex:
> > SELECT E.CODCLI
> >   , E.RAZAO
> >   , D.NOME
> > FROM CLIENTES E
> > left join PROPRIETARIOS D ON (D.CODPROP=E.CODPROP)
> > ORDER BY E.RAZAO
> >
> > mesmo existindo um indice por RAZAO o firebird não usa este indice no
> > PLAN.
> > Porém quando uso:
> > SELECT E.CODCLI
> >   , E.RAZAO
> >   , E.CODPROP
> >   , (SELECT D.NOME FROM PROPRIETARIOS WHERE D.CODPROP=E.CODPROP) AS
> > NOMEPROP
> > FROM CLIENTES E
> > ORDER BY E.RAZAO
> > o firebird utiliza o PLAN usando o indice pelo campo RAZAO
> >
> > 1ª pergunta: Posso deixar como esta o BD que este problema será
> > solicionado no Firebird 2.0 ou seria melhor "arrumar" tudo o que está
> > pronto?
> > 2ª pergunta: Quando realmente deverá sair a versão final do 2.0?
> >
> > Reuber
> >
> >
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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
> >
> >
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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