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

Responder a