2011-08-08 39 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