在PostgreSQL更新列时,使用DISTINCT检查有哪些优势?
在PostgreSQL中,用如下的 update 语句写法,是否有优势
update
person
set
name = :newName
where
name = :oldName AND
name IS DISTINCT FROM :newName
相比之下,直接写成
update
person
set
name = :newName
where
name = :oldName
DISTINCT 检查是否对数据库性能有任何提升?
解决方案
是的,确实有性能优势。
第二条语句在不会产生实际差异的地方避免执行更新。更新一行意味着写入该行的新版本,并修改该行的所有索引(除非它是一个 HOT update)。所有这些都会带来性能成本。此外,每次更新最终都会产生一个“死”版本的行,需要被autovacuum删除,这会给系统带来额外的压力。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。