0

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

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

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

4

2 回答 2

3

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

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

SELECT 与 SET:优化循环

于 2008-10-10T05:15:21.743 回答
0

我考虑过但从未测试过。

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

我认为从维护的角度来看,做多个分配可能很有用,如果你想要一些应该始终一起完成的事情,而不是通过剪切和粘贴或重构来分解。

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

于 2008-10-09T23:51:17.903 回答