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