with 和 nolock 的区别解决方法
答案:2 悬赏:30 手机版
解决时间 2021-01-04 05:02
- 提问者网友:焚苦与心
- 2021-01-03 20:52
with 和 nolock 的区别解决方法
最佳答案
- 五星知识达人网友:神的生死簿
- 2021-01-10 05:28
跨服务器查询语句时 不能用with (nolock) 只能用nolock
同一个服务器查询时 则with (nolock)和nolock都可以用。
比如
select * from [IP].a.dbo.table1 with (nolock) 这样会提示用错误。
select * from a.dbo.table1 with (nolock) 这样就可以。
要提升SQL的查询效能,一般来说大家会以建立索引(index)为第一考虑。其实除了index的建立之外,当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询的环境中数据集被LOCK的现象藉此改善查询的效能。
不过有一点千万要注意的就是,WITH (NOLOCK)的SQL SELECT有可能会造成Dirty Read(脏读)。
同一个服务器查询时 则with (nolock)和nolock都可以用。
比如
select * from [IP].a.dbo.table1 with (nolock) 这样会提示用错误。
select * from a.dbo.table1 with (nolock) 这样就可以。
要提升SQL的查询效能,一般来说大家会以建立索引(index)为第一考虑。其实除了index的建立之外,当我们在下SQL Command时,在语法中加一段WITH (NOLOCK)可以改善在线大量查询的环境中数据集被LOCK的现象藉此改善查询的效能。
不过有一点千万要注意的就是,WITH (NOLOCK)的SQL SELECT有可能会造成Dirty Read(脏读)。
全部回答
- 1楼网友:从此江山别
- 2021-01-10 06:23
一条是查询链接服务器, 一条是查询实例内的数据, 所以存在是否支持的问题, 而不是是否加 with 的区别。
可以考虑
1. 在远程服务器建立视图, 视图中使用 with(nolock) 查询, 远种调用这个视图
2. 使用 select * from openquery(链接服务器名, 'select * from [ip].a.dbo.table1 with(nolock)')
3. 升级到高版本。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯