2009/5/28 José Augusto de Lima Pereira <[email protected]>

>
> Para ficar mais fácil de entender essa tabela, ela me diz todas as
> movimentações que foram feitas (saiu de A e depois de x tempo foi pra B,
> saiu de B e depois de x tempo foi pra A).
> Esses dados vem de um arquivo texto, então para diminuir a quantidade de
> registro em uma tabela que eu realmente vou trabalhar( fazer varias
> comparações para obter alguns ID´s) faço uma agrupamento nessa tabela. Esse
> agrupamento com 50 milhões de linhas, sem índice, demora mais de 5 dias e
> quando eu tento rodar essa consulta com índice, se for a cada 400.000
> registro, é feita em milisegungos, se for 410.000 demora 2 horas, só que o
> agrupamento que eu preciso, tem que suportar pelo menos 1 milhão de linhas
> (que são meus lançamentos do dia)
>
>
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.


[1] http://www.agiledata.org/essays/databaseRefactoringCatalog.html
[2] http://www.postgresql.org/docs/8.3/interactive/sql-createrule.html
[3]
http://www.nabble.com/Exemplo-do-uso-de-rule-para-trocar-um-insert-por-update--to23677237.html

-- 
Fabrízio de Royes Mello
>> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a