一切都是基于这样一种假设,即with(nolock)完全适合于情境。已经有很多问题在争论是否与(Nolock)一起使用。
我环顾四周,没有发现使用with(nolock)是否有实际的区别
select customer, zipcode from customers c with(nolock) 或者仅仅是(nolock)
select customer, zipcode from customers c (nolock) 两者之间有功能上的区别吗?风格化?
一个比另一个大,有被人反对的机会吗?
发布于 2012-08-24 16:07:34
没有功能差异,但最终没有WITH的语法将无法工作。有人反对这样做:
select customer, zipcode from customers c (nolock) 所以您应该使用这种格式:
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的讨论是分开的。我在这里写过他们的博客。)
发布于 2013-12-18 19:32:16
虽然我们找不到(诺洛克)和(诺洛克)之间的区别。with (nolock)在Server 2000版本中不起作用。
我还注意到,当您尝试从链接服务器中提取数据时,“(nolock)”将无法工作,而您应该使用“with (nolock)”。
-- this will not work
select * from server1.DB1.dbo.table1 (nolock)
-- this will work
select * from server1.DB1.dbo.table1 with (nolock)发布于 2012-08-24 16:06:57
这取决于您所使用的Server的哪个版本。
查看Server 2012的最新文档,表提示省略WITH是一个不受欢迎的特性。因此,虽然from customers c (nolock)可能会起作用,但您确实应该使用from customers c WITH (nolock)
请注意,这与from customers nolock不同;其中nolock将用作表别名。
从功能上看,它们似乎是一样的。
https://stackoverflow.com/questions/12112855
复制相似问题