2012-09-20 49 views
0

我有一个简单的PostgreSQL表,主键名为id和大约20个条目。PostgreSql删除时间超出

以下需要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)" 

我找不到那些删除查询到,长期任何解释。有什么我失踪?

+1

您是否检查pg_locks是否为此记录上的锁? –

+0

@FrankHeikens yes ..没有任何 – TGM

+0

第一次猜测:未索引的外键引用大表中的用户。 –

回答

1

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

编辑:我一开始并没有注意到你的桌子太小,连续扫描是正常的。