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
