Sérgio,
          se você quer deletar de 30 em 30mil, então o limit está no local 
incorreto. Este seu comando não é o mesmo que:

DELETE FROM Esquema.TABELA1  
WHERE  CAMPO1 = 'D_E_L'

// no máximo com um "and campo2 is not null)

???

sds
Fábio Gibon


  ----- Original Message ----- 
  From: sergio santos 
  To: [email protected] 
  Sent: Thursday, January 27, 2011 1:32 PM
  Subject: [pgbr-geral] Delete é muito lento


  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/[email protected]/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
  [email protected]
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a