ロックのコンテキストでは、テーブルとそれに関連するインデックスは別個のエンティティです。 2 つの個別のテーブル間ではなく、テーブルとそのインデックス間でデッド ロックが発生することがあります。
この問題が発生する可能性が最も高いのは、インデックスでロックが取得され、次に関連するテーブル (つまり、バー) で別のロックが取得されてデータ ルックアップが実行される場合です。挿入中は、これが逆の順序で発生します。最初に、テーブル (つまりバー) がロックされて更新され、次にインデックスがロックされます。
select foo from bar where @someId = 0 OR SomeId = @someId
プレ>SomeId と foo の両方を含むカバリング インデックスを (選択を支援するために) 追加できますか?このようにして、ルックアップを完全に回避し、問題の発生を防ぎます。
デッドロック フレームではなく、クエリ プランを投稿できますか?