为什么日期类型会严重影响查询执行的性能?

时间:2014-01-15 15:25:36

标签: sql-server performance tsql sqldatetime

我查询了以下表格:

DECLARE @date DATETIME = <some_date>

SELECT ....
FROM a
WHERE <some_conditions> AND a.LastEvent < @date

LastEvent列的类型为DATE

查询工作得非常快。但是,如果我将@date类型更改为DATE,查询执行似乎永远不会完成。如果我注释掉条件

AND a.LastEvent < @date

查询再次快速运行。

我很惊讶参数的轻微类型更改会影响性能,但我不知道为什么会发生这种情况。

1 个答案:

答案 0 :(得分:1)

可能这与比较需要内部演员进行比较这一事实有关,而且由于每种类型的存储方式,对这两种类型的评估是一项更加昂贵的操作。

对你的问题的其他评论都增加了关于运行测试的宝贵点,以确保你实际测量你认为你正在测量的东西。

理想情况下,您希望尽可能地尽可能地匹配您的类型,因为类型之间的转换操作不是最便宜的事情之一。

此外,索引也基于存储的类型,因此,实际上这可能是您的查询瓶颈所在,而不是类型转换。

查询执行计划应该可以帮助您推断出两种意见。