0

我有一个简单的 PostgreSQL 表,其中包含一个名为 id 的主键和大约 20 个条目。

以下执行需要 60 到 70 秒。

DELETE FROM user WHERE id = '20'

简单SELECT的查询在不到 10 毫升的时间内执行,这很好。

运行查询时EXPLAINDELETE这是输出:

"Seq Scan on user  (cost=0.00..1.26 rows=1 width=6)"
"  Filter: ((id)::text = '20'::text)"

对于那些需要这么长时间的删除查询,我找不到任何解释。有什么我想念的吗?

4

1 回答 1

1

一个可能的原因是您有一个引用该表的外键,该表在外键表达式上没有可用索引。因为你说主键的类型不规则,可能是外键的类型和主键的类型不匹配。

编辑:起初我没有注意到您的表太小以至于顺序扫描是正常的。

于 2012-09-20T11:11:02.497 回答