使用SQL Server2017。我有一堆带有分配的DECLARE,例如
DECLARE @_File_Status_None INT = 0
DECLARE @_File_Status_New INT = 1
DECLARE @_File_Status_Open INT = 2
在运行时,这需要实际时间吗?
基本上是将其编译为一系列赋值语句,还是将其编译到内存中的预填充位置(以便该构造在运行时根本不需要时间)?
答案 0 :(得分:0)
变量的内存是作为缓存计划的一部分分配的。有关in my answer here的一些信息。
对变量的分配在运行时发生,因此将花费一些微不足道的时间。
您可以从
查看if 1=0
begin
DECLARE @_File_Status_None INT = 0
DECLARE @_File_Status_New INT = 1
DECLARE @_File_Status_Open INT = 2
end
SELECT @_File_Status_None /*Doesn't have the value `0`*/
我从不关心这个执行时间。可能会以微秒为单位进行测量,并且在进行查询优化时总会有更大的鱼要炸。