我正在审查一些看起来如下的SQL:
SELECT DISTINCT MyField, GETDATE()
FROM MyTable
现在即使查询时间超过1毫秒,我也会收到预期的记录数。并且每条记录的DateTime都低至同一毫秒,实际上产生的记录数与:
相同SELECT DISTINCT MyField
FROM MyTable
任何人都可以指出我的任何文件或提供一些其他见解,以确定"规则"是什么使这种行为在SQL Server中是什么?
答案 0 :(得分:3)
GETDATE()
和RAND()
是运行时常量函数的规范示例。这意味着在启动命令时会调用该函数一次,而不是每行调用一次。
除了运行时常量非确定性内置函数RAND,还有 GETDATE系列,通话的数量,顺序和时间将取决于 选择的计划。
(据我所知,文档中没有详细说明。)
因此,GETDATE()
是查询的常量,不为每行计算。