我有一个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
我怀疑是最后一次&#34;或&#34;声明。存在一个集群复合主键索引,其中包括NOMDate和Workgroup字段等。
是优化此更新声明的最佳方法吗?
答案 0 :(得分:0)
更改您的位置
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
f.NOMDate>dateadd(mm,-18,getdate())
甚至更好,使用局部变量来保存dateadd(mm,-18,getdate())