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
