【发布时间】:2012-01-07 14:53:18
【问题描述】:
我需要从我的 PG 数据库中删除大约 200 万行。我有一个需要删除的 ID 列表。但是,我尝试这样做的任何方式都需要几天时间。
我尝试将它们放在一个表中并分批执行 100 个。4 天后,它仍在运行,只删除了 297268 行。 (我必须从 ID 表中选择 100 个 ID,删除该列表中的位置,从 ids 表中删除我选择的 100 个)。
我试过了:
DELETE FROM tbl WHERE id IN (select * from ids)
这也需要很长时间。很难衡量多长时间,因为在完成之前我看不到它的进度,但查询在 2 天后仍在运行。
当我知道要删除的特定 ID 并且有数百万个 ID 时,我只是在寻找从表中删除的最有效方法。
【问题讨论】:
-
还剩多少行?另一种方法是将剩余的行选择到工作表中,然后重命名表。
标签: sql postgresql bigdata sql-delete postgresql-performance