[firebase-br] RES: Luciano Franca - consulta demorando 2 horas

Eduardo Jedliczka edujed em gmail.com
Sex Jun 3 16:15:08 -03 2011


Acho que você não chegou a ler o meu e-mail... (principalmente da
parte do "executar o exists para cada registro").

eu tinha passado o seguinte select:

Select x.*, 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 (select cm.codigo_barras, cm.codigo, cm.codigo_fabricante,
cm.cod_fornecedor, cm.mercadoria, count(cc.codigo_barras) as
repeticoes
from cadastro_mercadorias cm
left outer join cc.codigo_barras on cc.codigo_barras = cm.codigo_barras
group by 1,2,3,4,5
having count(cc.codigo_barras) > 1) x
left outer join cadastro_fornecedor cf on (cf.codigo = x.cod_fornecedor)
left outer Join grade_produtos GP on (Gp.cod_produto = x.codigo)
group by 1,2,3,4,5,6,7


==========================
Eduardo Jedliczka
Apucarana - Pr
==========================




Em 3 de junho de 2011 15:57, Luciano franca
<luapfirebird em yahoo.com.br> escreveu:
> Showwwwww de codigo
>
> ficou assim
> Prepare time = 0ms
> Execute time = 1s 312ms
>
> Retornou esse Plan
> Plan
> PLAN SORT (MERGE (SORT (JOIN (CF NATURAL, CM INDEX (FK_CADASTRO_MERCADORIAS_3), GP INDEX (FK_GRADE_PRODUTOS_1))), SORT (SORT (DUPLICADOS CADASTRO_MERCADORIAS NATURAL))))
>
> o Plan anterior era esse
> PLAN SORT ((CC NATURAL))
> PLAN SORT (SORT (JOIN (CF NATURAL, CM INDEX (FK_CADASTRO_MERCADORIAS_3), GP INDEX (FK_GRADE_PRODUTOS_1))))
>
> Só não entendi o motivo porque ficou tão rapido essa query assim o colega pode explicar
>
>
>
> --- Em sex, 3/6/11, Felix <felix.sol em terra.com.br> escreveu:
>
> De: Felix <felix.sol em terra.com.br>
> Assunto: [firebase-br] RES:  Luciano Franca - consulta demorando 2 horas
> Para: "'FireBase'" <lista em firebase.com.br>
> Data: Sexta-feira, 3 de Junho de 2011, 15:14
>
> Rapaz, é por causa do MAX, faltou o GROUP BY no final. Coloca assim e
> informa o resultado por favor?
>
> select duplicados.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 (select codigo_barras, count(codigo_barras) registros from
> cadastro_mercadorias group by codigo_barras) duplicados
>
>  inner join cadastro_mercadorias cm on (duplicados.codigo_barras =
> cm.codigo_barras)
>  inner join cadastro_fornecedor  cf on (cf.codigo = cm.cod_fornecedor)
>  Inner Join grade_produtos       GP on (Gp.cod_produto = CM.codigo)
>
> where registros > 1
> group by 1, 2, 3, 4, 5
> order by  cm.codigo_barras
>
> Fco. Felix
> Desenvolvimento de Sistemas
> www.soltecnologia.com.br
>
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de Luciano franca
> Enviada em: sexta-feira, 3 de junho de 2011 15:04
> Para: FireBase
> Assunto: Re: [firebase-br] Luciano Franca - consulta demorando 2 horas
>
> Colega retorna esse erro
>
> Invalid token.
> Dynamic SQL Error.
> SQL error code = -104.
> Invalid expression in the select list (not contained in either an aggregate
> function or the GROUP BY clause).
>
> Eu consegui deixar mais rapido colocando IN no lugar de Exists e estou
> revisando todo o meu banco para ver o que posso melhorar em termos de
> indices
>
> --- Em sex, 3/6/11, Felix <felix.sol em terra.com.br> escreveu:
>
> De: Felix <felix.sol em terra.com.br>
> Assunto: [firebase-br] Luciano Franca - consulta demorando 2 horas
> Para: "'FireBase'" <lista em firebase.com.br>
> Data: Sexta-feira, 3 de Junho de 2011, 14:45
>
> Luciano, tenta este select e informa o resultado na lista?
>
> select duplicados.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 (select codigo_barras, count(codigo_barras) registros from
> cadastro_mercadorias group by codigo_barras) duplicados
>
>  inner join cadastro_mercadorias cm on duplicados.codigo_barras =
> cm.codigo_barras
>  inner join cadastro_fornecedor  cf on (cf.codigo = cm.cod_fornecedor)
>  Inner Join grade_produtos       GP on (Gp.cod_produto = CM.codigo)
>
> where registros > 1
> order by  cm.codigo_barras
>
> Fco. Felix
> Desenvolvimento de Sistemas
> www.soltecnologia.com.br
>
>
> ______________________________________________
> 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