使用GetDate()作为SELECT DISTINCT的一部分不是很好吗?

时间:2017-10-12 01:52:44

标签: sql sql-server

我正在审查一些看起来如下的SQL:

SELECT DISTINCT MyField, GETDATE()
FROM MyTable

现在即使查询时间超过1毫秒,我也会收到预期的记录数。并且每条记录的DateTime都低至同一毫秒,实际上产生的记录数与:

相同
SELECT DISTINCT MyField
FROM MyTable

任何人都可以指出我的任何文件或提供一些其他见解,以确定"规则"是什么使这种行为在SQL Server中是什么?

1 个答案:

答案 0 :(得分:3)

GETDATE()RAND()是运行时常量函数的规范示例。这意味着在启动命令时会调用该函数一次,而不是每行调用一次。

documentation

中提到了这一点
  

除了运行时常量非确定性内置函数RAND,还有   GETDATE系列,通话的数量,顺序和时间将取决于   选择的计划。

(据我所知,文档中没有详细说明。)

因此,GETDATE()是查询的常量,不为每行计算。