Pessoal Estive procurando pela lista sobre "Delete muito lento" e encontrei um artigo do Fábio Telles Rodriguez em: http://www.midstorm.org/~telles/2007/11/29/nao-use-delete-use-insert/ Também vi que já aconteceu uma grande discussão sobre este assunto em: http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg04746.html
No entanto, depois de ler tudo isso, não consegui fazer com que o meu comando DELETE FROM Esquema.TABELA1 WHERE CAMPO2 IN( SELECT CAMPO2 from Esquema.TABELA1 WHERE CAMPO1 = 'D_E_L' LIMIT 30000 ); se torne viável. A consulta se refere a uma tabela de 1.352.996 registros e pelo menos 6 FOREIGN KEY. Não posso simplesmente dar um TRUNCATE na TABELA1 uma vez que é uma tabela em produção. Não posso também deletar as FOREIGN KEY e depois habilitá-las novamente, pois acho isso muito arriscado, a tabela é muito importante aqui na empresa. Alguém tem alguma dica de como melhorar a performance em um DELETE ? O Query Plan segue abaixo "Nested Loop (cost=54559.52..55425.84 rows=200 width=6)" " -> HashAggregate (cost=54559.52..54561.52 rows=200 width=4)" " -> Limit (cost=0.00..54184.52 rows=30000 width=4)" " -> Seq Scan on TABELA1 (cost=0.00..69348.96 rows=38396 width=4)" " Filter: ((CAMPO1)::text = 'D_E_L'::text)" " -> Index Scan using pedido_pkey on pedido (cost=0.00..4.31 rows=1 width=10)" " Index Cond: (Esquema.TABELA1.CAMPO2 = Esquema.TABELA1.CAMPO2)" Obrigado ------------------------ Sérgio Antônio dos Santos Bacharel em Sistemas de Informação Cel: (31) 8601-5207 Residencia: (31) 3885-2346 site: http://www.clientside.com.br Twitter: @serginhosant Linkedin: http://br.linkedin.com/in/serginhosant Delicious: http://www.delicious.com/serginhosant Fotos: http://picasaweb.google.com/sergio.serginhosant ----------- “Rogo a Deus como se esperasse tudo d’Ele, mas trabalho como se esperasse tudo de mim” S.Tomás de Aquino
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral