sql-server – SQL Server:在proc定义中使用’WITH RECOMPILE’的效果?

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server:在proc定义中使用’WITH RECOMPILE’的效果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对存储过程对WITH RECOMPILE选项的理解通常限于使用具有单个存储过程调用作为尾随参数的子句:
exec sp_mystoredproc 'Parameter1',2,'1/28/2011' with recompile

包括WITH RECOMPILE在实际的proc定义中有什么影响?这会在每次执行时重新编译proc?或者下一次proc被改变了?

例:

CREATE PROCEDURE [dbo].[sp_mystoredproc]
    (@string1           varchar(8000),@int2              int = 2,@dt_begin          DATETIME
    with recompile
AS
... proc code ...

解决方法

这使得proc在每次运行时重建所有查询的计划.

有用的是proc参数的值会影响过滤器的选择性.

说,这个查询的最佳方案:

SELECT  *
FROM    orders
WHERE   order_date BETWEEN @begin_report AND @from_report

如果日期范围较大或索引扫描如果较小,则将进行全面扫描.

使用WITH RECOMPILE创建,proc将在每次执行时构建计划;没有一个,它将坚持一个单一的计划(但会节省时间重新编译本身).

这个提示通常用于处理大量数据和执行复杂报告的处理中,当整体查询时间较长时,重建计划的时间与更好的计划节省的时间相比可以忽略不计.

猜你在找的MsSQL相关文章