DATEDIFF性能(Datediff performance)

2019-07-18 16:15发布

我有一个天数变量,我想比较对日期时间列(senddate)的。

即时通讯目前这样做:

DECLARE @RunDate datetime = '2013-01-01' 
DECALRE @CalculationInterval int = 10

DELETE
FROM TableA
WHERE datediff(dd, senddate, @RunDate) > @CalculationInterval 

所以基本上较旧的内容然后是10天应被删除,我们有指数上sendDate列,但仍然是速度慢得多,我知道左边应该不会有性能方面的原因计算,但究竟是什么,否则解决这个的最佳方式问题?

Answer 1:

表达方式

WHERE datediff(dd, senddate, @RunDate) > @CalculationInterval 

将不能够在使用索引senddate列,因为在上LHS的功能, senddate

为了使WHERE子句“可优化搜索”(即能够使用索引),改变为等效的条件:

WHERE senddate < dateadd(dd, -@CalculationInterval, @RunDate)

[由于@Krystian利伯,用于指出不正确条件。



文章来源: Datediff performance