【发布时间】:2023-02-23 13:10:08
【问题描述】:
我有两个表 stage_instance 和 stage_binary 。 stage_binary 有一个主键id,stage_instance 有一个普通的int 列,名为binary_id。此列中没有外键约束,但该列已建立索引。
我发布此删除声明:
DELETE FROM stage_instance WHERE binary_id NOT IN (SELECT id FROM stage_binary)
-
stage_binary有 240k 行 -
stage_instance有 130k 行
删除需要 19 分钟。那很慢吗?我怎样才能使这个计划更快?
【问题讨论】:
-
需要一些信息来更好地帮助您:什么版本的 Postgresql?安装数据库的机器的规格是什么(RAM、处理器、时钟、它是虚拟的等等)?你有任何其他列索引吗?
-
检查查询计划,虽然我怀疑索引是否有很大帮助,因为
select无论如何都要进行全表扫描。仅供参考,这个QA可能对你的问题值得注意。 -
操作系统:RHEL8 vCPU:6 内存:12 虚拟机 Postgres 14 不确定时钟信息...
-
not exists有更多帮助吗?会尝试 -
@DarkCygnus 在我的问题中说我有
binary_id索引。另一个id是主键,因此默认索引
标签: postgresql