【发布时间】:2012-09-12 16:52:13
【问题描述】:
我有一个简单的 PostgreSQL 表,其中包含一个名为 id 的主键和大约 20 个条目。
执行以下操作需要 60 到 70 秒。
DELETE FROM user WHERE id = '20'
简单的SELECT 查询在不到 10 毫升的时间内执行,这很好。
在DELETE 查询上运行EXPLAIN 时,输出如下:
"Seq Scan on user (cost=0.00..1.26 rows=1 width=6)"
" Filter: ((id)::text = '20'::text)"
对于那些需要这么长时间的删除查询,我找不到任何解释。我有什么遗漏吗?
【问题讨论】:
-
你检查过 pg_locks 是否有锁在这条记录上?
-
@FrankHeikens 是的.. 没有
-
第一个猜测:未索引的外键引用大表中的用户。
标签: sql postgresql