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将在每次执行时构建计划;没有一个,它将坚持一个单一的计划(但会节省时间重新编译本身).

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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...