代码之家  ›  专栏  ›  技术社区  ›  ninesided

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

  •  0
  • ninesided  · 技术社区  · 17 年前

    假设我在存储过程的顶部有一块初始化代码,其中有许多变量赋值:

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

    很明显,将上述所有操作作为一个选择将更快:

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

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

    2 回复  |  直到 17 年前
        1
  •  3
  •   Pittsburgh DBA    17 年前

    在这种情况下,在执行多个分配时,从性能上选择Wins。

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

    SELECT vs. SET: Optimizing Loops

        2
  •  0
  •   Cade Roux    17 年前

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

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

    我认为,从维护的角度来看,做多个任务是有用的,如果你想要一些应该一起做的事情,而不是用剪切粘贴或重构来分解。

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

    推荐文章