我有一些天数变量,我想将它们与一个日期时间列(senddate)进行比较。
我目前正在这样做:
DECLARE @RunDate datetime = '2013-01-01'
DECLARE @CalculationInterval int = 10
DELETE
FROM TableA
WHERE datediff(dd, senddate, @RunDate) > @CalculationInterval 任何超过10天的内容都应该删除。我们已经在sendDate列上建立了索引,但是速度还是慢得多。我知道由于性能原因,左边不应该有计算,但是解决这个问题的最佳方法是什么?
发布于 2013-01-24 22:59:18
表达式
WHERE datediff(dd, senddate, @RunDate) > @CalculationInterval 由于列senddate上的函数,无法对senddate列使用索引
为了使WHERE子句'SARGable‘(即能够使用索引),请更改为等效条件:
WHERE senddate < dateadd(dd, -@CalculationInterval, @RunDate)感谢@Krystian Lieber指出了不正确的情况。
https://stackoverflow.com/questions/14504189
复制相似问题