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

Speed of multiple variable assignment in T-SQL

提问人:ninesided 提问时间:10/10/2008 最后编辑:Cade Rouxninesided 更新时间:10/10/2008 访问量:1241

问:

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

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())
...

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

性能 T-SQL 变量

评论


答:

0赞 Cade Roux 10/10/2008 #1

我考虑过,但从未测试过。

根据我的经验,优化器非常好,所以我认为它没有区别,但如果你认为它真的很有用,我会运行一些测试。

我认为从维护的角度来看,做多个任务是有用的,如果你希望一些应该总是一起完成的事情不会被剪切和粘贴或重构所破坏。

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

3赞 Pittsburgh DBA 10/10/2008 #2

在这种情况下,在执行多个任务时,SELECT 在性能方面获胜。

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

SELECT 与 SET:优化循环