我想知道最有效的方法是从PostgreSQL删除大量行,这一过程每天都会是将数据批量导入(插入和删除的增量)到表中的一项重复任务。可能要删除数千行,甚至数百万行。
我有一个主键文件,每行一个。我所考虑的两个选项与以下内容类似,但我对PostgreSQL的内部知识了解不足/不了解,无法做出明智的决定,这是最佳选择。
DELETE
使用简单WHERE
的主键对文件中的每一行执行查询(或n
使用IN()
子句分批对删除进行分组)- 使用
COPY
命令将主键导入到临时表中,然后使用连接从主表中删除
任何建议将不胜感激!
1
此处已更详细地回答了相同的问题:stackoverflow.com/a/8290958
—
Simon