1

有人可以解释在 SQL 查询中使用 with (NOLOCK) 是否真的会导致它们运行得更快?如果是这样,为什么?

4

2 回答 2

5

使用NOLOCK本身并不能加速您的个人查询。但它允许其他查询访问同一个表,从而减少了因死锁而损失的时间。

当一个客户端选择更新表并花费大量时间来完成事务时,这特别有用。使用NOLOCK命令,其他客户端可以执行尝试访问表的查询。他们不必等待更新完成,因此即使一个事务仍在进行中,其他事务也可以完成。

这并不意味着使用该NOLOCK命令可以增强单个查询的性能。它只是提高了涉及多个客户端或正在进行批处理的整体性能。

但是,您需要注意在使用NOLOCK. 这是一篇很好的文章,解释了为什么通常应该避免使用NOLOCK.

于 2014-10-01T08:33:31.293 回答
0

WITH(NOLOCK)(来源):

不要发出共享锁,也不要使用排他锁。当此选项生效时,可以读取未提交的事务或在读取过程中回滚的一组页面。脏读是可能的。仅适用于 SELECT 语句。  

于 2015-06-09T10:35:35.287 回答