我只想检查一下我的逻辑。
假设我想查找过去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,所以我无法使用执行计划进行测试。
发布于 2009-12-01 18:59:39
是的,你是对的,第二个查询会更快,因为它可以使用CreateDate上的任何可用的索引。
https://stackoverflow.com/questions/1825418
复制相似问题