49

すべては、 with(nolock) が状況に完全に適しているという前提に基づいています。with(nolock) を使用するかどうかについては、すでに多くの質問があります。

私は周りを見回しましたが、使用に実際の違いがあるかどうかを見つけることができませんでしたwith(nolock):

select customer, zipcode from customers c with(nolock) 

または単に(nolock)

select customer, zipcode from customers c (nolock) 

2つの間に機能的な違いはありますか?文体?
一方が他方より古く、非推奨になる可能性はありますか?

4

4 に答える 4

62

機能的な違いはありませんが、最終的になしの構文は機能しなくWITHなります。これは廃止されました:

select customer, zipcode from customers c (nolock) 

したがって、次の形式を使用する必要があります。

select customer, zipcode from customers c with (nolock) 

テーブル ヒントにキーワードを使用しないことはWITH、少なくとも SQL Server 2008 以降では推奨されていません。次のトピックでフレーズを検索してSpecifying table hints without using the WITH keyword.ください。

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

nolock(もちろん、まったく使用する必要があるかどうかについての議論は別です。私はそれらについてここでブログを書いています。)

于 2012-08-24T16:07:34.240 に答える
6

実際に使用している SQL Server のバージョンによって異なります。

SQL Server 2012のテーブル ヒントの省略に関する最新のドキュメントを確認することWITHは、非推奨の機能です。したがって、from customers c (nolock)おそらくうまくいくでしょう。あなたは本当に使うべきですfrom customers c WITH (nolock)

from customers nolockこれは;とは異なることに注意してください。ここで、nolock はテーブル エイリアスとして機能します。

機能的に; それらは同じように見えます。

于 2012-08-24T16:06:57.067 に答える
2

170000 以上のデータ行の結果に対してこれを試しましたが、クエリ実行プランに違いは見られませんでした。どちらも同じように機能します。

于 2013-11-18T13:35:40.527 に答える