WEB开发网
开发学院数据库MSSQL Server SQL Server 2005 中的批编译、重新编译和计划缓存... 阅读

SQL Server 2005 中的批编译、重新编译和计划缓存问题(1)

 2007-05-13 09:24:59 来源:WEB开发网   
核心提示: 3.sp_executesql 过程,这是促进查询计划重用的方法之一,SQL Server 2005 中的批编译、重新编译和计划缓存问题(1)(5),当使用 sp_executesql 时,用户或应用程序将明确地确定参数,一个句柄和一些参数值会被发送到服务器,ODBC 和 OLE DB 通

3.

sp_executesql 过程。这是促进查询计划重用的方法之一。当使用 sp_executesql 时,用户或应用程序将明确地确定参数。例如:

EXEC sp_executesql N'SELECT p.ProductID, p.Name, p.ProductNumber 
FROM Production.Product p 
INNER JOIN Production.ProductDescription pd 
ON p.ProductID = pd.ProductDescriptionID 
WHERE p.ProductID = @a', N'@a int', 170
 
EXEC sp_executesql N'SELECT p.ProductID, p.Name, p.ProductNumber
FROM Production.Product p INNER JOIN Production.ProductDescription pd
ON p.ProductID = pd.ProductDescriptionID 
WHERE p.ProductID = @a', N'@a int', 1201

可通过逐一列举来指定多个参数。实际的参数值遵照相应的参数定义。根据查询文本(sp_executesql 后的第一个参数)的匹配情况以及查询文本(上例中的 N'@a int')后面所带的所有参数来预测计划重用机会。不考虑参数值(170 和 1201)的文本是否匹配。因此,在上述例子中,两个 sp_executesql 语句会发生计划重用。

4.

预备的查询.该方法——类似于 sp_executesql 方法——还促进了查询计划重用。在“准备”时发送批处理文本。SQL Server 2005 通过返回一个句柄(可用于在执行时调用批处理)进行响应。在执行时,一个句柄和一些参数值会被发送到服务器。ODBC 和 OLE DB 通过 SQLPrepare/SQLExecute 和 ICommandPrepare 显露该功能。例如,使用 ODBC 的代码段可能如下所示:

SQLPrepare(hstmt, "SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail sod
WHERE SalesOrderID < ?
GROUP BY SalesOrderID
ORDER BY SalesOrderID", SQL_NTS)
SQLExecute(hstmt)

上一页  1 2 3 4 5 6 7 8  下一页

Tags:SQL Server 编译

编辑录入:coldstar [复制链接] [打 印]
赞助商链接