[firebase-br] Consulta UNION Lenta

RedDevil reddevil em reddevil.eti.br
Dom Abr 24 22:42:18 -03 2005


ola pessoal.
tudo bem com voces?
sincerely, espero que sim...
;o)

putz, esta thread acabou se tornando uma liçao de vida, algo  tipow uma
palestra de filosofia...
;o)

diante do que o Eduardo disse ae abaixo, eu somente posso dizer que
assino acima (se eu disser que "assino embaixo" estarei plagiando o Mr.
R.R...;o), e que todos nos somente pararemos de aprender cerca de cinco
minutos apos a nossa morte, segundo o que dizem os sabios...


[]s
força sempre!
ate +++

Luiz "RedDevil" Stefanski
http://www.RedDevil.eti.br - Delphi Powered By IBObjects
I Love Katz Killer...



Segundo o que, em um futuro muito distante, dirao as lendas, em Dom,
2005-04-24 às 21:20, eduardo escreveu:
> Tamos aqui é prá isso mesmo.
> 
> Gostei dos resultados e acho que este tipo de discussão é bastante 
> importante para a lista.
> 
> Vivendo e aprendendo... = ... Quem está aprendendo está vivo
> 
> []s Eduardo
> 
> Eliomar wrote:
> > Olá Eduardo... é Vivendo e aprendendo... 
> > Fiquei curioso com o que vc me disse e fiz alguns
> > teste, ficou meio grande mais valeu a pena... 
> > usando condição where codigo > 0 gasta se um 
> > pouquinho mais de tempo mais usa se menos memória.
> > e usando o union all bateu todos os recordes tempo 0ms. rsrsr
> > 
> > usando 
> > select * from tb
> > union
> > select * from tb2
> > ------ Performance info ------
> > Prepare time = 15ms
> > Execute time = 907ms
> > Avg fetch time = 100,78 ms
> > Current memory = 850.992
> > Max memory = 991.100
> > Memory buffers = 2.048
> > Reads from disk to cache = 3.058
> > Writes from cache to disk = 6
> > Fetches from cache = 406.111
> > 
> > usando 
> > select * from tb where codigo > 0
> >  union
> > select * from tb2 where codigo > 0
> > ------ Performance info ------
> > Prepare time = 15ms
> > Execute time = 985ms
> > Avg fetch time = 109,44 ms
> > Current memory = 859.632
> > Max memory = 925.332
> > Memory buffers = 2.048
> > Reads from disk to cache = 3.736
> > Writes from cache to disk = 6
> > Fetches from cache = 400.725
> > 
> > usando 
> > select * from tb
> > union all 
> > select * from tb2
> > ------ Performance info ------
> > Prepare time = 0ms
> > Execute time = 0ms
> > Avg fetch time = 0,00 ms
> > Current memory = 744.900
> > Max memory = 869.632
> > Memory buffers = 2.048
> > Reads from disk to cache = 0
> > Writes from cache to disk = 6
> > Fetches from cache = 651
> > 
> > 
> > Agradecido.
> > Eliomar,
> > ICQ - 167715482
> > Soft-Data Softwares Administrativos
> > hptt://www.promediconet.com.br
> > 
> > 
> > ------------- Segue mensagem original! -------------
> > 
> > De: eduardo <eduardo em icontroller.com.br>
> > Data: Sat, 23 Apr 2005 09:17:35 -0300
> > Para: lista em firebase.com.br
> > Assunto: Re: [firebase-br] Consulta UNION Lenta
> > 
> > Oi Eliomar
> > 
> > Desculpe, mas acho que não é bem assim.
> > Se você quer todos os registros de uma tabela,
> > enganar o Servidor que existe um critério,
> > certamente acarretará em queda de performance,
> > uma vez que a cada Row ele, obrigatoriamente, vai
> > testar o WHERE.
> > A busca natural, sem índices, neste caso seria a
> > mais apropriada.
> > 
> > No caso em questão:
> > O mais provável é que, por não haver critério,
> > a quantidade de linhas retornada é muito grande.
> > Observe que no UNION, o Servidor terá que trazer
> > todas as linhas da TB1, depois buscar todas as da TB2
> > comparando a cada linha se não existe uma igual.
> > 
> > Dependendo do que se quer, se não houver possibilidade
> > de linhas iguais nas duas tabelas, será melhor utilizar
> > UNION ALL. Desta forma o Servidor não teria o trabalho
> > desnecessário de comparar se a linha já existe no ResultSet.
> > 
> > Em ambos os casos, é necessário verificar o componente
> > utilizado, pois trazer dados muito volumosos em um
> > xClientDataSet sem PacketRecords também degrada muito
> > a performance, uma vez que todo o ResultSet tem que
> > transitar na rede e ser armazenado na memória de uma só vez.
> > 
> > Espero ter contribuído
> > 
> > []s Eduardo
> > 
> > 
> > 
> > Eliomar wrote:
> > 
> >>Você não usou nenhuma condição isso faz
> >>com que o banco use idx natutal o que faz 
> >>ficar lento, mesmo que queira que aparece 
> >>todos vc tem que usar uma condição por ex:
> >>
> >>select * from tb1 where codigo > 0
> >>
> >>Entendeu?
> >>
> >>Agradecido.
> >>Eliomar,
> >>ICQ - 167715482
> >>Soft-Data Softwares Administrativos
> >>hptt://www.promediconet.com.br
> >>
> >>
> >>------------- Segue mensagem original! -------------
> >>
> >>De: "Silenus Systems LTDA" <silenus em silenus.com.br>
> >>Data: Fri, 22 Apr 2005 16:53:57 -0400
> >>Para: lista em firebase.com.br
> >>Assunto: [firebase-br] Consulta UNION Lenta
> >>
> >>
> >>Ex
> >>
> >>Select ID, DESCRICAO FROM TB1
> >>UNION
> >>Select ID, DESCRICAO FROM TB2
> >>
> >>Alguem sabe por que isso ocorre no Firebird 1.5.2?? Ou sugere algo
> >>diferente.






Mais detalhes sobre a lista de discussão lista