2015-11-15 35 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。 。 。觀點也可能會對性能產生負面影響。 –