4

次の更新ステートメントがあるとします。

UPDATE @TableVariable
SET city = T2.city
FROM @TableVariable TV
INNER JOIN dbo.TABLE_1 T1 WITH (NOLOCK)
    ON  (TV.customer_id = T1.customer_id)
INNER JOIN dbo.TABLE_2 T2 WITH (NOLOCK)
    ON  (T1.address_id = T2.address_id)

TABLE_1 と TABLE_2 の (NOLOCK) ヒントは受け入れられますか?

4

2 に答える 2

8

TABLE_1 と TABLE_2 の (NOLOCK) ヒントは受け入れられますか?

はい、そうします。

一般に、この動作は非常に間違っていることに注意してください。これが本当に必要だと思われる場合は、データベースやアプリを再設計する必要があります。

NOLOCKヒントの目的は何ですか?テーブル変数をダーティ データで更新する理由は何ですか?

于 2010-11-01T15:15:18.400 に答える
1

NoLock ヒントは、サーバーの生産性を向上させます。ただし、(NOLOCK) ヒントは、データへのアクセスがその時点で変更されないことが十分に保証されている場合 (たとえば、データ部分が DB にポストされると変更されないままになるか、データの現在の部分が変更されないことがわかっている場合) に安全に使用できます。他のユーザーによって) または古いデータまたは新しいデータを取得することが重要ではない場合 (たとえば、一部のデータは頻繁に変更され、何らかの方法で正確に最新のものを保存する必要はありません)。他の方法では、異なるテーブルでデータの相違が発生する可能性があります...

于 2010-11-03T14:20:41.057 に答える