データが変更されないことが保証されているテーブルがある場合、そのテーブルに対するSELECTクエリにNOLOCKヒントを追加しても完全に安全ですか?
実際には、はい(そのように文書化されていませんが)、しかし役に立たない。データが変更されない場合、ダーティリードを使用しても、観察可能な動作や重要なパフォーマンスの違いは発生しません。
一部の行が更新されるテーブルがあり、変更されないことが保証されている行のみを選択している場合、これもNOLOCKヒントを使用する完全に安全なシナリオですか?
いいえ、絶対にありません。ターゲット行を読み取るクエリプランは、適切な同時実行性の制御なしに、変化するデータ構造を読み取る可能性があります。つまり、クエリが奇妙な結果を返さなかったり、間違った結果を返したり、単に失敗したりしないことを期待に戻しています。