Kaz*_*kit 5 performance sql-server execution-plan query-performance
在我的查询中,我比较了WHERE
子句中的两个日期
一旦使用CONVERT
:
CONVERT(day,InsertedOn) = CONVERT(day,GETDATE())
Run Code Online (Sandbox Code Playgroud)
另一个使用DATEDIFF
:
DATEDIFF(day,InsertedOn,GETDATE()) = 0
Run Code Online (Sandbox Code Playgroud)
这是执行计划
的数据类型InsertedOn
是datetime
。
哪个更优化?
相反,尝试
WHERE InsertedOn>=CAST(GETDATE() AS date) AND
InsertedOn<DATEADD(day, 1, CAST(GETDATE() AS date))
Run Code Online (Sandbox Code Playgroud)
这个表达式是sargable,这是您想要的最佳性能。就像@Mikael 指出的那样,您最好设计一个索引,使其InsertedOn
成为第一列,并且查询中使用的所有其他列都包含在索引中。如果查询中有很多列,最好使用表的聚集索引。阅读覆盖索引。