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