更改时更新行

时间:2014-04-08 16:16:28

标签: sql sql-server

我有一个脚本,必须多次更新大表中的某些字段。 在主循环中,我做这样的查询:

UPDATE books SET title='ABC' WHERE code=123

我知道在超过99.9%的情况下,查询不会更改标题,因为它已经设置为' ABC'。 我想让这个循环尽可能高效。 相反,我可以这样做:

SELECT title FROM books WHERE code=123

然后,将结果与我的字符串进行比较,并且只有当它不同时才执行UPDATE。 当标题发生变化时,我会再运行一次查询,但这几乎可以忽略不计,因为几乎不需要更改该值。

我的问题是:这会更有效吗?换句话说,UPDATE是否会导致对字段的更改比检索相同字段的SELECT更有效?

1 个答案:

答案 0 :(得分:1)

阅读通常更具效果,因为它可以通过利用(NOLOCK)或将交易级别设置为READ UNCOMMITTED

以非阻止方式完成

更新是一个阻止语句,即使没有更改更新字段,也会在事务持续期间锁定该行。