大桌子的运行缓慢更新



我在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

我怀疑这是最后一个"或"语句。有一个聚类的复合主键索引,其中包括Nomdate和Workgroup字段等。

是优化此更新语句的最佳方法吗?

更改您的statment

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())

甚至更好,请使用本地var保存DATEADD(mm,-18,getDate())

最新更新