DECLARE分配会在运行时消耗时间吗?

时间:2019-03-11 23:23:52

标签: sql-server tsql

使用SQL Server2017。我有一堆带有分配的DECLARE,例如

DECLARE @_File_Status_None INT = 0
DECLARE @_File_Status_New  INT = 1
DECLARE @_File_Status_Open INT = 2

在运行时,这需要实际时间吗?

基本上是将其编译为一系列赋值语句,还是将其编译到内存中的预填充位置(以便该构造在运行时根本不需要时间)?

1 个答案:

答案 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`*/

我从不关心这个执行时间。可能会以微秒为单位进行测量,并且在进行查询优化时总会有更大的鱼要炸。