Re: Long-running DELETE...WHERE...
| От | Tom Lane |
|---|---|
| Тема | Re: Long-running DELETE...WHERE... |
| Дата | |
| Msg-id | 21141.1011057670@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Long-running DELETE...WHERE... (jboes@nexcerpt.com (Jeff Boes)) |
| Ответы |
Re: Long-running DELETE...WHERE...
Re: Long-running DELETE...WHERE... |
| Список | pgsql-sql |
jboes@nexcerpt.com (Jeff Boes) writes:
> My situation: table A has 200,000 rows. I've made up a temporary table
> which holds the single-valued primary key for 80,000 rows which I want
> to delete.
> DELETE FROM a WHERE id IN (select ID from tmp LIMIT 800);
> runs for several minutes.
WHERE ... IN ... is notoriously inefficient. I'd try
DELETE FROM aa WHERE id = tmp.id;
which is not standard SQL but should be able to produce a decent plan.
You might find that a VACUUM ANALYZE on both tables beforehand would be
a good idea, too; never-vacuumed temp tables have some default
statistics assumed that are a lot less than 80k rows.
regards, tom lane
В списке pgsql-sql по дате отправления: