Eu fiz um "IN SELECT" por causa do LIMIT para ele não percorrer a tabela
inteira. Eu estou fazendo um limite de 30000 numa tentativa de deixar o
DELETE mais rápido pois se fosse para excluir todos os registros mesmo seria
uns 80000 mil e na minha opinião ficaria muito mais lendo.

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


Em 27 de janeiro de 2011 14:55, Fernando N. Rodrigues <
[email protected]> escreveu:

> Percebi nesta sua query, que não existe uma tabela 2, então pra quê
> realizar IN SELECT (.....)?????
>
>
>
> Em 27 de janeiro de 2011 14:32, sergio santos
> <[email protected]> escreveu:
> > 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/<http://www.midstorm.org/%7Etelles/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
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a