我有一个复杂的SQL查询,可以连接超过15个表,并带来30列。 知道源表上有更新日期列。
如何从该查询中获取所有更新/插入信息的增量?
在where子句中添加15个条件(DateDiff(d,T1.Update_Date,getdate()) <= @delta OR DateDiff(d,T2.Update_Date,getdate()) <= @delta OR .....)
既不高效也不方便
答案 0 :(得分:0)
通常,您现在想要在where
子句中的列上使用函数。这使优化器更难运行。
而不是:
DateDiff(T1.Update_Date, getdate()) <= @delta
你想要这样的东西:
t1.Update_date <= dateadd(day, - @delta, getdate())
(这是SQL Server语法;这个想法是相同的,但其他数据集的语法不同)。
如果要检查每个表中的列,则需要列出列。因为您要按OR
连接条件,这可能不会对性能产生太大影响。