2015-11-15 34 views
0

这是我的更新 -Postgres。更新一个记录时间长

UPDATE "users" SET "name" = $?, "is_read" = $?, "updated_at" = $? WHERE "users"."id" = ? 

有时需要花费大约150秒(但normaly - 它的快)。你能告诉我可能的原因吗? users.id有指数

+0

任何触发器? users.id被索引了吗? – jarlh

+0

是的,users.id被编入索引。如果我有这张桌子的观点 - 这可能是理由? –

+0

视图不应该有任何区别。重新编译索引可能会有所作为,但我不知道postgresql那么好......触发器可以产生巨大的差异。 – jarlh

回答

0

为了加快此更新,您想对users(id)指数:

create index idx_users_id on users(id) 

通常情况下,id将被宣布为一个主键(或者至少是唯一的),并且已经有一个索引。但如果不是,这应该有所帮助。

注意:还有其他可能性,例如其他进程在表上具有锁定或非常复杂的插入触发器。

+0

谢谢,用户(id)索引存在。用户表与视图有什么关系?它可以是原因吗? –

+0

@ArtoymP。 。 。观点也可能会对性能产生负面影响。 –