[pgbr-geral] RES: RES: RES: Indice parando.

2009-05-28 Por tôpico José Augusto de Lima Pereira
Obrigado aos amigos Euler e Fabrizio.

 

Vou fazer alguns testes.

Realmente, não tinha pensando na utilização de uma trigger ou rule para
fazer a contagem. Vou fazer alguns testes para ver como vai ficar.

 

Quanto ao resultado, acabou de ficar pronto o ANALYZE.

 




 GroupAggregate  (cost=15214945.32..17137926.62 rows=4605944 width=76)
(actual time=5220913.166..5548633.536 rows=45426667 loops=1)

   -  Sort  (cost=15214945.32..15330093.90 rows=46059432 width=76) (actual
time=5220913.148..5399270.222 rows=46059431 loops=1)

 Sort Key: data, produto, cliente, (substring((fone)::text, 0,
13)), grupo, gerador, subproduto, simples, alterado, possivel, negado, novo,
finalizado

 Sort Method:  external merge  Disk: 4556616kB

 -  Seq Scan on importação (cost=0.00..1480786.06 rows=46059432
width=76) (actual time=0.030..100216.580 rows=46059431 loops=1) 

Filter: (((gerador)::text = ‘NACIONAL’::text) AND (simples = 'N'::bpchar))

 Total runtime: 5561850.965 ms

(7 rows)




 

Gerei toda a saída do explain analyze para um arquivo, caso achem
necessário, posso colocar em anexo esse arquivo.

 

Agradeço a ajuda de todos.

Atenciosamente.

José Augusto Pereira.

 

 

 

 

Caro José Augusto,

Além das recomendações do colega Euler, você poderia pensar em refatorar [1]
a tua estrutura de dados... pelo que entendi você tem uma tabela que contém
toda tua movimentação e gera uma secundária com o resumo das movimentações
(me corrija se estiver errado) então você cria esse *resumo* executando um
SELECT que tem alto custo para o banco de dados...

Você poderia ao invés de executar esse SELECT, que é custoso, criar uma
trigger na tabela das movimentações que atualiza a tabela do resumo das
movimentações quanto houver INSERT/UPDATE/DELETE... 

Com a aplicação do *database refactoring* [1] denominado *Introduce
Read-Only Table* você consegue rapidamente montar essa estrutura, pois a
tabela *read-only* você já implementa, então falta somente a trigger para
atualização dos dados.

Existe também a possibilidade de utilizar Rules [2] ao invés de triggers...
inclusive esses dias um colega postou na lista uma dica interessante do uso
de rules [3]

Espero ter ajudado.



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] RES: RES: RES: Indice parando.

2009-05-28 Por tôpico Euler Taveira de Oliveira
José Augusto de Lima Pereira escreveu:
 Quanto ao resultado, acabou de ficar pronto o ANALYZE.
 
Bom, o problema é que ele está fazendo uma ordenação no disco que consome 4G e
97% do tempo é gasto nisso. :(
Qual o percentual retornado por essa consulta? Você falou em 400k de 4M que
seria 10%; neste caso ele usaria o índice.
Você executou ANALYZE nessa tabela antes do EXPLAIN ANALYZE?
Qual a estrutura da tabela e dos índices bem como a consulta executada?


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral