1

假设我们有查询 A:

SELECT count(1) FROM MyTable WHERE Date_Created < DATEADD(DD, 3, GETDATE())

AND 查询 B:

SELECT count(1) FROM MyTable WHERE Date_Created < '2013-05-24'

运行这些查询时,编译器如何优化查询 A?它是否重新评估MyTable中每一行的 DATEADD 和 GETDATE ?

我问的原因是因为我进行了几次测试以查看哪些查询更快,结果似乎表明两者的性能没有太大差异,这有点违反直觉。谢谢。

4

1 回答 1

3

GETDATE是一个运行时常量,不会重复重新评估。

很可能整个表达式 withDATEADD只会被评估一次。

于 2013-05-21T16:17:14.137 回答