[firebase-br] Subselects ou Left Joins

RAMJ SISTEMAS & CONSULTORIA jubrovolski em yahoo.com.br
Qui Maio 19 09:39:30 -03 2005


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
>
>
>
>  
>







Mais detalhes sobre a lista de discussão lista