科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道教你轻松掌握参数和执行计划的重新使用

教你轻松掌握参数和执行计划的重新使用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

使用参数(包括 ADO、OLE DB 和 ODBC 应用程序中的参数标记)可以增加重新使用执行计划的机会。

作者:赛迪网 limeinana 来源:天新网 2008年3月27日

关键字: Mssql SQL SQL Server 数据库

  • 评论
  • 分享微博
  • 分享邮件

使用参数(包括 ADO、OLE DB 和 ODBC 应用程序中的参数标记)可以增加重新使用执行计划的机会。

下面两个 SELECT 语句的唯一区别是 WHERE 子句中的比较值:

SELECT * FROM Northwind.dbo.Products WHERE CategoryID = 1
SELECT * FROM Northwind.dbo.Products WHERE CategoryID = 4

这两个查询的执行计划的唯一区别是为比较 CategoryID 列而存储的值。虽然 SQL Server 2000 的目标是始终承认语句生成的计划在本质上相同并重新使用这些计划,但是 SQL Server 有时在复杂的 SQL 语句中检测不到这一点。

使用参数将常量与 SQL 语句分开有助于关系引擎识别重复计划。可以按下列方式使用参数:

·在 Transact-SQL 中,使用 sp_executesql: 
DECLARE @MyIntParm INT
SET @MyIntParm = 1
EXEC sp_executesql
  N'SELECT * FROM Northwind.dbo.Products WHERE CategoryID = @Parm',
  N'@Parm INT',
  @MyIntParm

这一方法最适于 Transact-SQL 脚本、存储过程或动态生成 SQL 语句的触发器。

·ADO、OLE DB 和 ODBC 使用参数标记。参数标记是问号 (?),在 SQL 语句中替代常量并绑定到程序变量。例如,在 ODBC 应用程序中:

·使用 SQLBindParameter 将整型变量绑定到 SQL 语句中的第一个参数标记上。

·在变量中放入整型值。

·执行语句,并指定参数标记 (?):

SQLExecDirect(hstmt, 
"SELECT * FROM Northwind.dbo.Products WHERE CategoryID = ?",
SQL_NTS);

在应用程序中使用参数标记时,随 SQL Server 2000 提供的用于 SQL Server 的 Microsoft OLE DB 提供程序和 SQL Server ODBC 驱动程序都使用 sp_executesql 将语句发送到 SQL Server 2000。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章