【发布时间】:2021-11-02 01:43:49
【问题描述】:
我在 PostgreSQL 数据库中有两个表,其中包含几百万条记录。 我正在尝试从一个表中删除 ID 与另一表的 ID 匹配的行。我使用了以下命令:
delete from table1 where id in (select id from table2)
上面的命令已经花费了很多时间(几个小时),这让我想知道是否有更快的方法来执行此操作。创建索引会有帮助吗?
我也按照少数人的建议尝试了使用 join 删除:
delete from table1 join table2 on table1.id = table2.id
但是上面的命令返回了一个语法错误。可以修改它以避免错误吗?
【问题讨论】:
-
您是否尝试了
exists条件而不是IN?
标签: sql postgresql indexing sql-delete postgresql-performance