• TSQL中的参数与变量


    在TSQL中,查询语句编译时并不为变量赋值(SET OR SELECT Operation),即变量赋值在编译完成,语句执行时才执行赋值操作,因此查询优化器不一定能为查询语句生成一个合适的执行计划

    ex:

    DECLARE @Id INT =100;
    SELECT * FROM dbo.Users
    WHERE UserId>@Id

    可以使用以下几种方式修改:

    --=====================================================
    DECLARE @Id INT =100;
    SELECT * FROM dbo.Users
    WHERE UserId>@Id
    OPTION(RECOMPILE)
    --=====================================================
    DECLARE @Id INT =100;
    SELECT * FROM dbo.Users
    WHERE UserId>@Id
    OPTION(RECOMPILE(@ID=2));
    --=====================================================
    SP_EXECUTESQL '
    SELECT * FROM dbo.Users
    WHERE UserId>@Id',N'@Id INT',@ID=100
    --=====================================================
    CREATE PROCEDURE dbo.usp_GetUser
    (
        @ID INT
    )
    AS
    BEGIN
        SELECT * FROM dbo.Users
    WHERE UserId>@Id
    END
    GO
    EXEC dbo.usp_GetUser @ID=100
    --=====================================================

     存储过程在首次执行时进行编译并缓存以便后续重复调用

    ps:此文章参照'大材小用'博客http://www.cnblogs.com/slade/archive/2012/04/29/2476463.html#2367297

  • 相关阅读:
    打印水仙花数
    打印从1到k之间的所有素数
    Fibonacci数列小程序
    Fibonacci数
    水仙花数
    猴子吃桃问题
    5个数求最值—南阳acm
    三个数从小到大排序—南阳acm
    南阳acm奇偶数分离
    find the safest road--hdu1596
  • 原文地址:https://www.cnblogs.com/TeyGao/p/2478218.html
Copyright © 2020-2023  润新知