首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与(nolock)或(Nolock)-有什么不同吗?

与(nolock)或(Nolock)-有什么不同吗?
EN

Stack Overflow用户
提问于 2012-08-24 16:01:08
回答 4查看 68.5K关注 0票数 49

一切都是基于这样一种假设,即with(nolock)完全适合于情境。已经有很多问题在争论是否与(Nolock)一起使用。

我环顾四周,没有发现使用with(nolock)是否有实际的区别

代码语言:javascript
复制
select customer, zipcode from customers c with(nolock) 

或者仅仅是(nolock)

代码语言:javascript
复制
select customer, zipcode from customers c (nolock) 

两者之间有功能上的区别吗?风格化?

一个比另一个大,有被人反对的机会吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-24 16:07:34

没有功能差异,但最终没有WITH的语法将无法工作。有人反对这样做:

代码语言:javascript
复制
select customer, zipcode from customers c (nolock) 

所以您应该使用这种格式:

代码语言:javascript
复制
select customer, zipcode from customers c with (nolock) 

至少自Server 2008以来,不对表提示使用WITH关键字已被取消。搜索以下主题以获得短语Specifying table hints without using the WITH keyword.

http://msdn.microsoft.com/en-us/library/ms143729%28SQL.100%29.aspx

(当然,关于是否应该使用nolock的讨论是分开的。我在这里写过他们的博客。)

票数 62
EN

Stack Overflow用户

发布于 2013-12-18 19:32:16

虽然我们找不到(诺洛克)和(诺洛克)之间的区别。with (nolock)在Server 2000版本中不起作用。

我还注意到,当您尝试从链接服务器中提取数据时,“(nolock)”将无法工作,而您应该使用“with (nolock)”。

代码语言:javascript
复制
-- this will not work 
select * from server1.DB1.dbo.table1 (nolock)

-- this will  work 
select * from server1.DB1.dbo.table1 with (nolock)
票数 8
EN

Stack Overflow用户

发布于 2012-08-24 16:06:57

这取决于您所使用的Server的哪个版本。

查看Server 2012的最新文档,表提示省略WITH是一个不受欢迎的特性。因此,虽然from customers c (nolock)可能会起作用,但您确实应该使用from customers c WITH (nolock)

请注意,这与from customers nolock不同;其中nolock将用作表别名。

从功能上看,它们似乎是一样的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12112855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档