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

Luciano franca luapfirebird em yahoo.com.br
Qui Jun 2 11:04:39 -03 2011


   É como eu já disse,  sei que existe codigo SQLs melhores mais agora gostaria de entender o motivo que em Sub-Select o Firebird é tão lerdo é como se o Exists fosse ignorado e o firebird usa um IN.



--- Em qui, 2/6/11, Marcelo Carvalho <marcelo.nc em gmail.com> escreveu:

De: Marcelo Carvalho <marcelo.nc em gmail.com>
Assunto: Re: [firebase-br] Consulta demorando 2 horas como resolvo.
Para: "FireBase" <lista em firebase.com.br>
Data: Quinta-feira, 2 de Junho de 2011, 10:51

Se você quer buscar somente os duplicados pq não faz assim:

select cc.codigo_barras from cadastro_mercadorias cc
 where cc.codigo_barras = cm.codigo_barras
 group by 1 having count(cc.codigo_barras) > 1


-- 
Atenciosamente,

*Marcelo Carvalho*
MSN *carvalho826 em hotmail.com*
*
*

Em 2 de junho de 2011 10:42, Luciano franca <luapfirebird em yahoo.com.br>escreveu:

> Ele vai retornar produtos com o codigo de barras duplicados
> eu sei que deve ter SQLs mais simples para esse proposito só que agora
> achei interessante o porque o PostGreSQL ser tão mais veloz
>
>
> --- Em qui, 2/6/11, Marcelo Carvalho <marcelo.nc em gmail.com> escreveu:
>
> De: Marcelo Carvalho <marcelo.nc em gmail.com>
> Assunto: Re: [firebase-br] Consulta demorando 2 horas como resolvo.
> Para: "FireBase" <lista em firebase.com.br>
> Data: Quinta-feira, 2 de Junho de 2011, 10:25
>
> Desculpe, mas fiquei um pouco perdido neste seu select e subselect's....
> Me diga em poucas palavras o que vc precisa que retorne deste select ???
>
>
> --
> Atenciosamente,
>
> *Marcelo Carvalho*
> MSN *carvalho826 em hotmail.com*
> *
> *
> Em 2 de junho de 2011 10:00, Luciano franca <luapfirebird em yahoo.com.br
> >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
> >
> ______________________________________________
> 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
> ______________________________________________
> 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
>
______________________________________________
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