SQLServer nolockを使ってテーブルをロックせずにSELECTする

2019.4.30

始めに

SQLServer の SQL でテーブルをロックせずに SELECT を行う方法を紹介します。
ロックしてしまうと危険なテーブルに対して SELECT を行う際に nolock ヒントを使うと安全に行えます。

nolock を使った SQL

nolock の使い方は次のようになります。

select * from テーブル名 with ( nolock )

テーブル名の後ろにwith ( nolock )をつけるだけでダーティリードになります。
更新中のテーブルに対しても、ロックが競合することなく SELECT できます。

注意事項

nolock をつけていても、Sch-M タイプのロックになってしまった場合は、他の SQL が待ちになります。

関連記事