[firebase-br] Subselects ou Left Joins

Eduardo Jedliczka eduardo em gerasoft.com.br
Qui Maio 19 09:44:52 -03 2005


Reuber,

Neste caso, esquece o plan... Utilizar um índice para melhorar um Order by
parece até piada...

Se sua tabela tem 2M registros, deve dar para perceber a diferença de
performance entre o Left e o SubSelect... E neste caso, isto é o que
importa...

[s]

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

----- Original Message ----- 
From: "RAMJ SISTEMAS & CONSULTORIA" <jubrovolski em yahoo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, May 19, 2005 9:39 AM
Subject: Re: [firebase-br] Subselects ou Left Joins


> Olá Eduardo
>
> O indice do campo Razao é simples ou seja somente com ele mesmo. Estou
> fazendo testes com uma tabela com 2 milhões de registros. Usando o Left
> Join, o Firebird não utiliza o Plan pelo indice razao, porém usando
> subselects, ele consegue utilizar o Plan pelo campo.
>
> Reuber
>
> Eduardo Jedliczka escreveu:
>
> >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
> >>
> >>
> >>
> >>
> >
> >
> >______________________________________________
> >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
> >
> >__________ Informação do NOD32 1.1100 (20050518) __________
> >
> >Esta mensagem foi verificada pelo NOD32 Sistema Antivírus
> >http://www.nod32.com.br
> >
> >
> >
> >
> >
>
>
>
>
> ______________________________________________
> 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