0
SQL Serverのアップデートには時間がかかります。コードは次のとおりです。遅い実行中大きなテーブルの更新
update
f
set
f.WorkKey = d.WorkKey,
f.LastModifiedDtm = GETDATE()
from
f_cic_i_agent_queue f
join
NMWork d
on
f.Workgroup = d.WorkCode
and
f.NOMDate >= d.StartDate and
(f.NOMDate <= d.EndDate or d.EndDate is null)
where
datediff(mm,f.NOMDate,getdate()) <= 18
最後の "or"ステートメントと思われます。 NOMDateフィールドとWorkgroupフィールドを含むクラスタ化された複合主キーインデックスがあります。
この更新ステートメントを最適化する最適な方法はありますか?
質問はDDLのDMLを含むべきですあなたのテストデータが大きい場合は、テーブルのスキーマと統計をスクリプト化してください(データベースを右クリック - >スクリプト生成 - >特定のデータベースオブジェクトを選択 - >次の画面で詳細を選択して統計を選択してください)質問に貼り付けてください。この情報では、あなたが直面している問題と同じ問題が発生します。それ以外は、あなたの質問に答えるのが非常に難しくなります。 help – TheGameiswar
実行計画とインデックス情報を提供する必要があります。その前に、Where句でDateDiffを避けることができます。 https://stackoverflow.com/questions/2547316/is-sql-datediffyear-an-expensive-computationを参照してください。 –