Em 18-05-2011 20:32, Cesar Pedroso escreveu:
> Então Osvaldo pelo que entendi do post uma solução seria criar uma
> tabela temporaria, mas se for criar uma tabela temporaria para mandar os
> registros para la e depois apagar a outra tabela é mais facil eu apagar
> a PK dar o delete e depois recriar a PK, menos trabalho.
>
Esta *não* é a solução menos trabalhosa para o SGBD. A solução com a outra 
tabela é a mais rápida; no entanto, eu acrescentaria um passo aquela solução: 
criar a outra tabela e inserir os registros de interesse em uma mesma 
transação. Isto fará com que a carga de dados se beneficie de uma otimização 
adicionada na versão 8.3.

Você falou em remover 200k registros mas não disse a percentagem que isso 
representa da tabela. Em casos com índices, chaves estrangeiras e gatilhos, 
esta solução (aparentemente complicada) fará muita diferença no tempo de 
execução.

É uma ilusão pensar que somente escritas em índices consomem boa parte do 
tempo de execução em um comando DELETE. A escrita no WAL e execução de 
gatilhos também contribuem para este tempo.


-- 
   Euler Taveira de Oliveira - Timbira       http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a