T-SQL中多变量赋值的速度

时间:2008-10-09 23:40:41

标签: performance tsql variables variable-assignment

想象一下,我在存储过程的顶部有一大堆初始化代码,其中包含许多变量赋值:

SET @proc = 'sp_madeupname'
SET @magic_number = 42
SET @tomorrows_date = DATEADD(dd, 1, GETDATE())
...

显然,将所有上述操作作为一个SELECT会更快:

SELECT
     @proc = 'sp_madeupname'
    ,@magic_number = 42
    ,@tomorrows_date = DATEADD(dd, 1, GETDATE())
...

多少更快?假设这个存储过程是作为循环的一部分执行了几千次,是否会对性能产生任何显着影响?

2 个答案:

答案 0 :(得分:3)

在这种情况下,SELECT在执行多项任务时会以性能方式获胜。

以下是有关它的更多信息:

SELECT vs. SET: Optimizing Loops

答案 1 :(得分:0)

我已经考虑过但从未测试过它。

根据我的经验,优化器非常好,所以我认为它没有任何区别,但如果您认为它确实有用,我会进行一些测试。

我认为从维护的角度来看,进行多项任务可能很有用,如果你想要一些事情应该总是一起完成,不要用剪切和粘贴或重构来分解。

出于同样的原因,相对模块化的代码可以从单独的初始化中受益,因为在维护期间更容易将其剪切并粘贴到重构器上。