【问题标题】:SQL Server 2012 DECLARE Performance scenariosSQL Server 2012 DECLARE 性能方案
【发布时间】:2015-12-22 12:19:01
【问题描述】:

我有一个非常简短的问题。我必须声明许多变量(大约 50 个)。 以下哪个查询会更快,query1 还是 query2?

查询 #1:

DECLARE @var1 int,
        @var2 int,
        @var3 int, ....

查询 #2:

DECLARE @var1 int
DECLARE @var2 int
DECLARE @var3 int ....

提前致谢。

【问题讨论】:

    标签: sql-server sql-server-2012 query-performance declare sql-execution-plan


    【解决方案1】:

    这个:

    DECLARE @var1 int;
    DECLARE @var2 int;
    DECLARE @var3 int;
    

    同下,只是语法糖

    DECLARE @var1 int,
            @var2 int,
            @var3 int, ....
    

    警告:当您初始化依赖于先前变量的变量时:

    DECLARE @a INT = 1
            ,@b INT = @a + 1;
    
    SELECT @b;
    

    必须声明标量变量“@a”。

    你需要使用:

    DECLARE @a INT = 1;
    DECLARE @b INT = @a + 1;
    
    SELECT @b;
    

    【讨论】:

    • 你测量了吗?你怎么知道没有性能差异?
    • @usr 执行计划相同 50%/50%。语法糖的定义表明它是相同的。但如果你知道反例,我会纠正我的答案。
    • 执行计划表示根据模型估计的成本。不需要物理执行什么。并非所有语法糖都是免费的。
    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多