[firebase-br] Consulta UNION Lenta
Eliomar
eliomar em promediconet.com.br
Dom Abr 24 04:15:22 -03 2005
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.
>
>
>
>
>
>
>
> ______________________________________________
> 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://search.gmane.org/search.php?group=firebase
>
______________________________________________
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://search.gmane.org/search.php?group=firebase
Mais detalhes sobre a lista de discussão lista