gbnが提供するリンクのおかげで、これが私の質問に答えると思います:
rand()と共通です。列ごとに1回評価されますが、一度評価されると、すべての行で同じままです。実際の実行プランでComputeScalar演算子のプロパティを見ると、GetDate()が2回評価されていることがわかります。
>
確認したところ、SQL Server 2008でも同じように発生しているようです:GetUtcDate()
実行計画で2回評価されます。行ごとに異なる結果が生成されることはありませんが、タイミングが適切に終了した場合は、列ごとに異なる結果が生成される可能性があります。
編集
私は実際にこの振る舞いを証明することができます!これを試してください:
select GETUTCDATE(), RAND(), RAND(), ...[~3000 RAND()s]..., RAND(), GETUTCDATE()
from [TableOfYourChoice]
私の実験では、2011-05-17 20:47:34.247
になりました。 最初の列と2011-05-17 20:47:34.250
最後の列には、すべてのRAND()
の評価の結果として3ミリ秒の差が示されています。 ■GETUTCDATE()の最初の呼び出しと2番目の呼び出しの間。