作爲一種粗略的猜測優化方法,我工作中的開瓶器(幾年前)將我們的comments
表中的body
列移至次表comment_extensions
表中。每次我們想要顯示評論時,加入一個加入似乎都不明智,所以我會嘗試將該列移回到我們的comments
表中並運行一些基準測試。PostgreSQL:什麼是更新3m記錄的有效方法?
我的問題是此更新抓取。我讓它跑了一個小時,然後關掉它,擔心這會花一整晚。
UPDATE comments SET body = comment_extensions.body
FROM comment_extensions
WHERE comments.id = comment_extensions.comment_id;
這是一個PostgreSQL 8.1數據庫,並且comment_extensions.comment_id
被索引。
任何建議讓這個運行更快?
每當我們顯示評論時,我們都需要在評論文本的'comment_extensions'表中對應的記錄。所以這是100%的時間。似乎沒有必要在兩張桌子上應該有一張桌子。 感謝您對小批量的建議。如果我們這樣做的話,我們可以在遷移過程中保持網站的流暢。 – user57995 2009-08-19 18:15:16
是的,這聽起來像一個負面的「優化」。檢查主表中的註釋字段。如果主表的註釋爲空,請在擴展表中檢查註釋。將所有新註釋插入主表中。這將保持你的網站,直到你準備好轉儲擴展表。小批量更新(取決於您的站點的負載,10k可能太多)會讓系統在後臺進行遷移時執行其生產工作。 – 2009-08-19 20:01:36