日期:2014-05-18  浏览次数:20528 次

关于with(nolock)的问题
比如下列语句:

select a.a1,a.a2,b.b3 from with(nolock) t1 as a
left join t2 as b on b.id1=a.id

这样写的目的是在于我要查t1的时候,不要锁住t1表,但是left join t2,是否需要加上with(nolock) 呢?

------解决方案--------------------
都去了吧~!
------解决方案--------------------
你那种写法本身是错误的吧
位置不对
select a.a1,a.a2,b.b3 from t1 as a with(nolock)
left join t2 as b on b.id1=a.id

至于要不要nolock就要看你能否接受脏读

------解决方案--------------------
个人认为一般情况下没有必要with(nolock)

------解决方案--------------------
1:数据量特别大的表,牺牲数据安全性来提升性能是可以考虑的;
2:允许出现脏读现象的业务逻辑
3:数据不经常修改的表,这样会省于锁定表的时间来大大加快查询速度。


------解决方案--------------------
一个字:加
------解决方案--------------------
探讨

1:数据量特别大的表,牺牲数据安全性来提升性能是可以考虑的;
2:允许出现脏读现象的业务逻辑
3:数据不经常修改的表,这样会省于锁定表的时间来大大加快查询速度。

------解决方案--------------------
加吧,数据量大的时候就容易死锁了。
------解决方案--------------------
建议都加with(nolock),

对于sql server而言,在高度并发情况下,可减少阻塞及死锁的可能性.

至于数据脏读,应该可以接受,毕竟事务rollback的几率是不大的.