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

Responder a