2011-08-08 72 views
4

說,我有以下查詢:Postgres的:在更新未更改的行

UPDATE table_name 
SET column_name1 = column_value1, ..., column_nameN = column_valueN 
WHERE id = M 

的事情是,column_value1,...,column_valueN沒有改變。這個查詢是否真的會被執行,這種情況下的性能與真正更改的數據進行更新相比如何?如果每頁有大約50個這樣的查詢且未更改數據,該怎麼辦?

+0

的可能的複製[將Postgres的真正更新頁面文件時字段前和更新後的人人平等?(http://stackoverflow.com/questions/40819603/would-postgres-really-update-page-file-when -fields-all-equal-before-and-aft) – styvane

回答

4

您只需指定更改的列和行,即可在此處幫助postgresql。它將繼續執行更新,而無需檢查數據是否已更改。

p.s.這是ORM派上用場的地方。

編輯:您可能也有興趣在How can I speed up update/replace operations in PostgreSQL?,其中OP經歷了所有的麻煩,以加快更新性能,當最好的性能可以通過只更新更改的數據。

+0

順便說一句,YII框架的ORM不檢查它並執行UPDATE查詢。 – zapadlo

+0

我明白了。在SQLAlchemy中,ORM層執行骯髒的工作,只在必要時發佈UPDATE。 – sayap