vamos imaginar que a tabela 't' tem o campo 'id' que você quer remover as 20 mil linhas:
postgres=# create table t (id integer); CREATE TABLE postgres=# insert into t select * from generate_series(1,1500000); LOG: temporary file: path "pg_tblspc/581531196/PG_9.3_201306121/pgsql_tmp/pgsql_tmp29753.0", size 21000000 INSERT 0 1500000 Agora vou criar uma tabela temporária que tenha 20 mil registros aleatórios. Serão os registros que eu vou querer apagar da tabela 't' postgres=# create temporary table f (id integer); CREATE TABLE postgres=# insert into f select round(random()*1500000) from generate_series(1,20000); INSERT 0 20000 Agora eu faço o DELETE dos registros que escolhi: postgres=# delete from t where exists (select 1 from f where f.id=t.id); DELETE 19866 Ou seja, eu prefiro fazer um SUBSELECT para apagar tudo. Em 18 de dezembro de 2017 17:15, Danilo Silva <danilo.dsg.go...@gmail.com> escreveu: > Pessoal, > > Qual seria a melhor prática para deletar 20 mil registros em uma tabela > com 1,5 milhões de registros, vale ressaltar que o campo condicional do > delete é a pk da tabela: > > a) Deletar os 20 mil de uma só vez com a condição "IN" no WHERE; > b) Fazer um loop na aplicação e deletar um por vez; > c) Outra técnica (qual?); > > Existe alguma forma de melhorar a rapidez do delete? Algum parâmetro no > .conf? > > []s > Danilo > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Atenciosamente, Fábio Telles Rodriguez blog: http:// <http://www.midstorm.org/~telles/>s <http://tellesr.wordpress.com/>avepoint.blog.br e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles Timbira - A empresa brasileira de Postgres http://www.timbira.com.br
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral