我在做如下查询:
SELECT * FROM a WHERE DATEDIFF(D, a.DateValue, DateTimeNow) < 3;
而不工作
我正在尝试获取不超过3天的数据。
SQL服务器。
这该怎么做?
DATEDIFF工作太慢。
DateDiff速度非常快…您的问题是您正在数据库表的列值上运行它,因此即使该列上有索引,查询处理器也必须在表的每一行上运行该函数。这意味着它必须从磁盘加载整个表。
DateDiff
相反,请使用dateAdd今天的功能,并将数据库表列与该单次计算的结果进行比较。现在,它仅运行DateAdd()一次,并且可以使用索引(如果存在)来仅加载与谓词条件匹配的行。
dateAdd
DateAdd()
Where a.DateValue > DateAdd(day,-3,getdate())
这样,您的查询谓词就可以使用SARG