WITH RECOMPILE和OPTION(RECOMPILE)区别

article/2025/10/6 16:25:21

在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等),
  一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译。
  之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不是仅仅只有这么一点区别。
  事实上在某些特定情况下,两者的区别并非仅仅是存储过程级重编译和语句级重编译的区别,
  从编译生成的执行计划来看,这两种强制编译的方式内在机制差异还是比较大的。
  这里同时引申出来另外一个问题:The Parameter Embedding Optimization(怎么翻译?也没有中文资料中提到The Parameter Embedding Optimization,勉强翻译为“参数植入优化”)

  本文通过一个简单的示例来说明这两者的区别(测试环境为SQL Server2014)。这里首先感谢UEST同学提供的参考资料和指导建议。

 

WITH RECOMPILE 和 OPTION(RECOMPILE)使用上的区别

  关于存储过程级别的重编译,典型用法如下,在存储过程参数之后指定“WITH RECOMPILE” 

复制代码
CREATE PROCEDURE TestRecompile_WithRecompile
(@p_parameter int
)WITH RECOMPILE
AS
BEGINSET NOCOUNT ON;SELECT * FROM TestRecompile WHERE Id = @p_parameter OR @p_parameter IS NULL
END
GO
复制代码

 

  关于语句级重编译,典型用法如下,在某一条SQL语句的末尾指定OPTION(RECOMPILE)

复制代码
CREATE PROCEDURE TestRecompile_OptionRecompile
(@p_parameter VARCHAR(50)
)
AS
BEGINSET NOCOUNT ON;SELECT * FROM TestRecompile WHERE Id = @p_parameter OR @p_parameter IS NULL OPTION(RECOMPILE)
END
GO
复制代码

 

  按照惯例,先搭建一个测试环境
  创建一张TestRecompile的表,也即上面存储过程中用到的表,插入100W行数据,Id字段上建立一个名字为idx_id的索引


http://chatgpt.dhexx.cn/article/w4H8X8c2.shtml

相关文章

内网穿透群晖NAS:实现无公网IP远程访问群晖 2/2

系列文章 内网穿透群晖NAS:免费安装cpolar群晖套件 1/2内网穿透群晖NAS:实现无公网IP远程访问群晖 2/2 上一篇 内网穿透群晖NAS:免费安装cpolar群晖套件 1/2 在上一篇介绍里,我们在群晖系统中成功安装了图形化界面的cpolar&#…

群晖设置公网ipv6方式域名解析访问

1.环境说明 上网:电信光猫tplink路由器(电信送的) 群晖:DSM 7.1.1-42962 Update 2 域名服务商:腾讯云 2.光猫设置 2.1 获取光猫超级用户密码 拨打电信10000号 2.2 修改光猫为桥接模式 略 3.路由器设置 3.1 路由器拨号上网…

群晖 阿里云ddns_群晖QuickConnect功能详解

先来了解下什么是QuickConnect,这是群晖的一个远程访问功能, 有这个功能直接注册一个QuickConnect账号就可以远程访问了, 这样就不需要你的宽带是否有公网ip, 也不需要配置路由器端口映射, 就可以轻松的实现外网访问。 上图的 http://quickconnect.to/vip 外网在电脑浏览器…

IPv6/IPv4 + aliddns 实现黑群晖外网控制和访问

前言 一直想弄台黑群NAS,但因为穷!一直没入,一直用的是玩客云,但玩客云满足不了我的需求,但正好搭上蜗牛星际的车! J19004G内存16G固态4盘位千兆网口才380元,性价比是真的高,再买两…

群晖NAS配置DNSPodDDNS实现外网访问(仅适用于阿里云域名)

创作立场声明:本文只是单纯的经验分享,没有任何恰饭行为!转载前请联系作者授权,并附上此文章链接! 前言 本文将详解如何使用群晖NAS自带的DDNS功能来实现腾讯云DNSPod动态域名解析。 设置你的域名DNS服务器到DNSPod 登录阿里云控制台&…

【宇麦科技】腾xun云登场,群晖NAS自定义域名教程来啦~

如今网盘的使用成本越来越高,更多的人选择搭建自己的家庭 NAS 服务器。 NAS 可以用来做大容量存储、文件备份、文件下载、相册同步,甚至可以搭建网站、搭建自己的笔记以及邮件服务。 NAS 一般都安装在家里,那么出门在外应该如何远程访问家里的…

群晖NAS的公网、NAT、DDNS、证书等配置一

一、群辉NAS应用场景 你是否有过这样的需求? 1. 远程办公 日常的工作资料太多太杂乱,换个电脑根本没法工作?团队间资料共享太麻烦?Drive套件这个远程办公神器都能解决。 我的文件相当于远程的“我的文档”,“团队文件”是可以与团队成员共享。在PC端和手机端都可以方便…

群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云)

群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云) 为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 一、下载镜像与配置启动参数 在群…

群晖外网访问终极解决方法:IPV6+阿里云ddns+ddnsto

写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法,这是后发现移动没有公网IP,只有ipv6(公网的),时候有小伙伴要问,要是没有ipv6就没办法访问群晖了吗? 不&…

群辉默认DDNS功能解析阿里云-自定义服务商

前言 前不久买了个群辉NAS发现群辉DDNS不能解析阿里云,后来找了很多教程都是部署Docker或使用其他平台转发一下,然而这些平台还要注册,我就在想我自己可不可以实现不需要注册就可以使用的DDNS,毕竟咱也是干这个的。 然后我就去上…

一文搞懂“如何通过群晖+DNSPod DDNS搭建私有云服务?”

DNSPod春节特惠3折起 买解析就送CDN,最高60TB CDN让你带回家 👉🏻购买入口 近期很多DIY私有云玩家私聊D妹“我想在外网访问家庭网络,怎么搞?”,“如何将动态IP映射到一个固定的域名解析服务上?”…

[NAS] Synology (群晖) DSM7.0 使用自定义供应商DDNS

简介 找了很多教程都是部署Docker或使用其他平台转发一下,然而这些平台还要注册, 实际阿里云是有阿里云OpenSDK 可以支持的,本来想自己写了一个,后面发现有人已经实现了, 就用了一个开发者的DDNS服务, https://ddns.bkood.com/, 在这里非常感…

群晖设置腾讯云ddns显示认证失败的两种解决办法【实测第二种成功了】

群晖腾讯云ddns显示认证失败 背景:问题:前提条件解决办法一:群晖自带的ddns解析步骤1:获取 API 密钥信息步骤2:群晖(Synology)NAS 配置 DDNS 解决办法二:利用Docker安装DDNS动态域名…

群晖IPv6/ddns-go/域名解析设置内网穿透方案

前言 群晖的内网穿透有很多方案,外网IPv4(这个现在很难搞到了),中间服务器搭建Tunnel隧道,frp等方案(网速慢,流量限制,需另购服务器),第三方服务花生壳等(按量付费,速度问题)。 本篇介绍的是 …

群晖QuickConnect与DDNS之间有何区别?

群晖QuickConnect与DDNS都是为了实现外网访问群晖NAS设备,它们2个之间有什么区别呢? DDNS访问速度更快 功能是一样的,但是实现的网络协议本质上有着不同。QuickConnect可让群晖设备通过Synology QuickConnect服务器与群晖产品(如…

外网访问群晖设置ddns教程

本来之前用的是华硕的路由器,里面自带ddns功能,但是最近不懂是硬件问题还是固件问题,测网速是没问题的,就是打游戏的时候会忽然卡一下,跳延迟,忍无可忍,最后用了gen10上面装的openwrt软路由&…

群晖DDNS和端口转发等相关讲解

文章目录 废话篇前言本文知识概要域名和IP地址的了解域名解析内网IP和外网IPDDNS是什么?群晖如何设置DDNS端口转发后言协助改进 废话篇 本篇文章为原创文章,转载请注明出处,感谢。 本人也有个人博客:李蜀博客 更多原创文章&…

群晖DDNS失效

之前在群晖里设置过DDNS以及路由器的端口映射,但是最近发现不灵了,群晖里的DDNS自动获取的IP地址和路由器拨号后的地址不一致,一直以为是群晖的自动获取IP失灵了,手动设置也不行,无法从外网访问。 后来咨询了下群晖客…

群晖DDNS解析

网上关于DDNS解析的介绍已经很多了,我这里主要列举通过阿里云和Cloudflare进行解析。使用两个解析的原因是阿里云的域名必须要备案,不然会被阿里云封掉(阿里云解析的域名如果解析的IP不是阿里云服务器的,还会提示要求使用阿里云服…

群晖折腾记1—群晖NAS使用docker中的ddns-go,DDNS阿里云ali实现Ipv6访问

群晖折腾记1—群晖NAS使用docker中的ddns-go,DDNS阿里云ali实现Ipv6访问 前置条件科普时间具体步骤1. 域名购买2. 获取AccessKey ID和Secret3. 获取免费SSL证书4. 在docker中运行ddns-go6.设置反向代理 前置条件 1、移动宽带只有IPv6公网地址,若你的宽带为电信或联…