有人可以解释一下,如果在SQL查询中使用(NOLOCK)实际上导致它们运行得更快吗?如果是这样,为什么?
答案 0 :(得分:5)
使用NOLOCK
本身并不能加快您的个人查询速度。但它允许其他查询访问同一个表,从而减少因死锁而丢失的时间。
当一个客户端选择更新表并花费大量时间来完成事务时,这尤其有用。使用NOLOCK
命令,其他客户端可以执行尝试访问该表的查询。他们不必等待更新完成,因此即使一个事务仍在进行中,其他事务也可以完成。
这并不意味着使用NOLOCK
命令可以提高单个查询的性能。它简单地提高了涉及多个客户端或批量执行的整体性能。
但是,使用NOLOCK
时,您需要注意脏读的风险。 Here's a good article解释了为什么通常应该避免使用NOLOCK
。
答案 1 :(得分:0)
WITH(NOLOCK)(source):
不要发布共享锁,也不要使用独占锁。当此选项生效时,可以读取未提交的事务或在读取过程中回滚的一组页面。脏读是可能的。仅适用于SELECT语句。