我只是想检查一下我的逻辑。
假设我想在过去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,所以我无法使用执行计划对此进行测试。
答案 0 :(得分:1)
是的,你是对的,第二个查询会更快,因为它可以使用可用的CreateDate上的任何索引。