在PostgreSQL更新列时,使用DISTINCT检查有哪些优势?

后端开发 2026-07-12

在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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章