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)
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接