私が取り組んでいるプロジェクトでは、2つのストアドプロシージャ(sp)の実行中にいくつかの速度低下が検出されています。 もっと正確に言えば、両方がほぼ同じ瞬間に同じテーブルでいくつかのステートメントを実行しようとするときに起こります。 2つのステートメントは次のとおりSQL Serverの異なるストアドプロシージャから同じテーブルを削除して読み込み中に遅くなる
- はである一時テーブル上の更新は、SPのA(IN削除テーブルと結合する
- (これはSP Aに起こる)テーブルから単一の行を削除しますこれはspで発生します。B)
これらのslowdonwが発生すると、文が終了するまでに数分かかることがあります。
結合および削除where句に使用されるフィールドはインデックスされていますが、これらのフィールドのいずれもクラスタ化インデックスではなく、別のフィールドにあります。
SP
...other code...
DELETE OrderItems
OUTPUT @LogId, DELETE.OrderId, ...[Other colums]
INTO OrderItemsLog(LogId, OrderId, ...[Other columns])
WHERE OrderId = @OrderId
...other code...
SP Bのこれらの二つの文がほぼ同じ瞬間に実行される
...other code...
UPDATE [Update some columns on the temp table]
FROM #TempOrderItems toi
JOIN OrderItems oi ON toi.OrderId = oi.OrderId AND toi.OrderItemId = oi.OrderItemId
...other code...
、速度低下がある:ここ
はコードの一例です。
誰かが理由を知っていますか... ...?
TNX
データベース内で何が起こっているのかを確認する必要があります、デッドロックなどがあります。ちょうどコードを読むことに基づいて、あなたはあまりできません。 –