加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:15:31 所属栏目:MsSql教程 来源:网络整理
导读:我对存储过程对WITH RECOMPILE选项的理解通常限于使用具有单个存储过程调用作为尾随参数的子句: exec sp_mystoredproc 'Parameter1',2,'1/28/2011' with recompile 包括WITH RECOMPILE在实际的proc定义中有什么影响?这会在每次执行时重新编译proc?或者下一
我对存储过程对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将在每次执行时构建计划;没有一个,它将坚持一个单一的计划(但会节省时间重新编译本身).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读