[firebase-br] Consulta demorando 2 horas como resolvo.

Paulo Portella pportellaa.firebase em gmail.com
Qui Jun 2 12:28:23 -03 2011


Bom dia,
Se o conteúdo tua base não tiver problemas de publicação, tem como tu 
subir um fbk pra que possamos analisar daqui?
Fisicamente, tua base não está tão pesada assim e pode subir zipada pra 
um Gmail da vida.

pportellaa(arroba)gmail.com

Caso não possa ser publicada, então desconsidere o que eu falei.

Vida de americano é assim: iPhone, iPod, iPad, iMac….
Já a de brasileiro é assim:IPTU, IPVA, ICMS, IPI etc


Em 02/06/2011 10:00, Luciano franca escreveu:
>   Bom dia pessoal eu tenho uma consulta aqui que está demorando  2:01:00   já rodei a mesma consulta varias vezes e sempre a mesma media de tempo.
>
>   Eu já executei em computadores diferentes para ver se tinha alguma problema relacionado a maquina mais sempre acontece a mesma coisa.
> Rodei em maquinas como Windows 7 x64 x32  Windows Xp, todas elas eram Core 2 Duo 3 GHZ com 4 GB de Ram,  já fiz backup e Restore mudei a configuração de Page Size para todas a opções possiveis, revi todos os indices envolvidos e esta tudo certo.
> Testei a ultima versão do Firebird 2x depois desistalei e coloquei o Firebird 2.5 testei tanto o Firebird x32 como x64
>
>   Por ultimo instalei o PostGreSQL v.9  x32  nas mesmas maquinas que tenho o firebird criei a mesma estrutura do banco, com os mesmos PKs, FKs e indices coloquei todos os dados do Banco Firebird no PostGreSQL  e para minha surpresa o PostGreSQL demora em media apenas 00:19:00 para executar a mesma consulta com o mesmo numero de linhas.
>
>    As Tabelas são
>    cadastro_fornecedor      2022 Registros
>    cadastro_mercadorias  41788 Registros
>    grade_produtos            95020 Registros
>
> A consulta SQL é
>
>   select cm.codigo, cm.codigo_barras, cm.codigo_fabricante, cm.cod_fornecedor, cm.mercadoria, cf.fornecedor,
>   Max(Case When(Gp.filial = 1) Then Gp.preco_g_vista End) As Preco_AS,
>   Max(Case When(Gp.filial = 2) Then Gp.preco_g_vista End) As Preco_MT
>   from cadastro_mercadorias cm
>   inner join cadastro_fornecedor cf on (cf.codigo = cm.cod_fornecedor)
>   Inner Join grade_produtos GP on (Gp.cod_produto = CM.codigo)
>   Where exists (select cc.codigo_barras from cadastro_mercadorias cc
>   where cc.codigo_barras = cm.codigo_barras
>   group by 1 having count(cc.codigo_barras)>  1)
>   group by 1, 2, 3, 4, 5, 6
>   order by  cm.codigo_barras
>
>   Acho o Firebird não consegue trabalhar muito bem com Sub-Select usando Exists.
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa




Mais detalhes sobre a lista de discussão lista