Tente isto:
Retire o Sum(TotItem) do order by, voce já tem ele no select, e também
inclua o CodFornec no group by.

[]'s
Marcio


select max(Fornecedor.CodFornec) as Codigo, Fornecedor.Nome as 
 Descricao,
 Sum(Quantidade) as Quantidade, Sum(TotItem) as Preco, Sum(Quantidade  *
Lucratividade) as Lucratividade, Sum(Quantidade * Custo) as Custo 
, Sum(V_CurvaABC.Desconto) as Desconto from V_CurvaABC inner join 
 ProdFornec using (CodProduto) inner join Fornecedor on 
 (ProdFornec.CodFornec = Fornecedor.CodFornec) where  CodEmitente = 1 
 and DtMovto between '15/09/2006' and '15/09/2007'
 group by Fornecedor.Nome,Fornecedor.CodFornec
 order by Preco Desc Limit 50


-----Mensagem original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Em nome de Rodrigo
Monteiro
Enviada em: quarta-feira, 17 de setembro de 2008 17:14
Para: Comunidade PostgreSQL Brasileira    
Assunto: Re: [pgbr-geral] banco de dados de sistema postgresql com 4GB!

boa tarde Volpato

Mais uma vez cara, muito obrigado pelo seu tempo.

Como eu gero este explain que vc me disse?

No caso do order by com max() é porque a curvaabc tem como critério ou
quantidade, ou valor, ou lucratividade(preco-custo), o que me deram como
dica seria criar uma tabela e jogar estes valores lá já calculados e a
partir dela criar a query da curvaabc

e o reindex? você pode me dizer o que posso fazer?

obrigado


Wed, 17 Sep 2008 16:07:56 -0300, volpato
<[EMAIL PROTECTED]> escreveu:

> 
> On Wed, 17 Sep 2008 14:58:39 -0300, "Rodrigo Monteiro"
> <[EMAIL PROTECTED]> wrote:
> > Boa tarde à todos
> 
> tarde!
> 
> > Realmente, além do vacuum, eu precisei criar um índice para cada 
> > campo que eu uso em critério e em ordenação, isso melhorou 
> > consideravelmente o retorno da query, minha preocupação é o que pode 
> > acontecer com o tamanho do meu banco de dados com tantos índices, 
> > eles aumentam muito o
> tamanho?
> 
> Tenho algumas bases aqui que são 50-50 (metade índice, metade dados).
> Seus índices vão crescer junto com seus dados, use com moderação...
> Experimente remover índices de campos de ordenação, e veja como fica a 
> performance.
> Nos servidores aqui eu deixo agendado semanalmente um REINDEX, que 
> recria os índices do zero. Isso evita que eles cresçam muito.
> 
> 
> >
> > eu estou com a versão 8.1
> >
> > percebi também que se eu disparar uma query muito pesada dá pau no 
> > postgres, ai a query fica correndo em loop, só fechando e abrindo o 
> > postgres novamente para voltar ao normal é a versão ou minha máquina?
> >
> > isso aconteceu no cliente algumas vezes, pelo relato dele, ao chamar 
> > um relatório pesado, algumas vezes ninguém mais conseguia usar, só 
> > reiniciando a máquina, lá no cliente é a 8.2
> 
> Definitivamente, isso não é normal.
> Pra gente te ajudar, mande as mensagens de erro.
> Pode ser que vc tenha algum problema de memória ou disco.
> 
> > query
> >
> > select max(Fornecedor.CodFornec) as Codigo, Fornecedor.Nome as 
> > Descricao,
> > Sum(Quantidade) as Quantidade, Sum(TotItem) as Preco, Sum(Quantidade 
> > * Lucratividade) as Lucratividade, Sum(Quantidade * Custo) as Custo 
> > , Sum(V_CurvaABC.Desconto) as Desconto from V_CurvaABC inner join 
> > ProdFornec using (CodProduto) inner join Fornecedor on 
> > (ProdFornec.CodFornec = Fornecedor.CodFornec) where  CodEmitente = 1 
> > and DtMovto between '15/09/2006' and '15/09/2007'
> >  group by Fornecedor.Nome order by Sum(TotItem) Desc Limit 50
> 
> Me parece estranho esse max() para o código de fornecedor.
> Acho que bastaria adicionar este campo no group by.
> Para esta query, vc iria precisar de índices em CodProduto, CodFornec 
> e DtMovto, e talvez em CodEmitente.
> 
> Porém, sem as saídas do explain, são apenas chutes :
> 
> >>
> >> Sobre a performance, mande pra gente:
> >> - tuas confs de memória do postgresql.conf
> >> - especificações dos servers ibm
> >> - saída do comando EXPLAIN ANALYZE <query>
> >>
> 
> []´s, ACV
> 
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> 
> 
> 
> 
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a