说,我有以下查询:Postgres的:在更新未更改的行
UPDATE table_name
SET column_name1 = column_value1, ..., column_nameN = column_valueN
WHERE id = M
的事情是,column_value1,...,column_valueN没有改变。这个查询是否真的会被执行,这种情况下的性能与真正更改的数据进行更新相比如何?如果每页有大约50个这样的查询且未更改数据,该怎么办?
说,我有以下查询:Postgres的:在更新未更改的行
UPDATE table_name
SET column_name1 = column_value1, ..., column_nameN = column_valueN
WHERE id = M
的事情是,column_value1,...,column_valueN没有改变。这个查询是否真的会被执行,这种情况下的性能与真正更改的数据进行更新相比如何?如果每页有大约50个这样的查询且未更改数据,该怎么办?
您只需指定更改的列和行,即可在此处帮助postgresql。它将继续执行更新,而无需检查数据是否已更改。
p.s.这是ORM派上用场的地方。
编辑:您可能也有兴趣在How can I speed up update/replace operations in PostgreSQL?,其中OP经历了所有的麻烦,以加快更新性能,当最好的性能可以通过只更新更改的数据。
的可能的复制[将Postgres的真正更新页面文件时字段前和更新后的人人平等?(http://stackoverflow.com/questions/40819603/would-postgres-really-update-page-file-when -fields-all-equal-before-and-aft) – styvane