优化DATEDIFF

时间:2009-12-01 10:53:50

标签: sql-server-2005 tsql optimization

我只是想检查一下我的逻辑。

假设我想在过去30天内找到所有新产品。我目前的程序是:

SELECT ProductName
FROM ProductTable
WHERE DATEDIFF( d, CreateDate, GETDATE() ) < 30 

但是,据我所知,像DATEDIFF这样的函数不会使用我在CreateDate创建的非聚集索引。因此,使用以下过程可以更快地运行查询:

SELECT ProductName
FROM ProductTable
WHERE CreateDate >= DATEADD( d, -30, GETDATE() ) AND CreateDate < GETDATE() 
顺便说一下,我没有SQL Server,所以我无法使用执行计划对此进行测试。

1 个答案:

答案 0 :(得分:1)

是的,你是对的,第二个查询会更快,因为它可以使用可用的CreateDate上的任何索引。