关于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的几率是不大的.