Postgres批量收集和Forall删除

时间:2014-05-07 14:10:39

标签: postgresql

目前在Oracle中,我每月运行一个程序来删除一些数据。出于Oracle中的性能原因,我使用BULK COLLECTFORALL .. DELETE来执行删除。

任何人都知道Postgres中是否有类似内容?如果我使用以下内容删除大量数据,是否需要关注性能?

DELETE FROM sample WHERE id IN (SELECT id FROM test);

1 个答案:

答案 0 :(得分:1)

使用WHERE EXISTS而非WHERE IN

否则,只要样本不是任何外键引用的目标,就应该没问题。如果是,您将需要索引的索引。

对于使用ON DELETE CASCADE的FK上的真正大删除,最好是在批处理中删除引用方进行连接,然后删除引用方。这有助于防止数百万个DELETE语句必须运行级联删除。