博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么叫即席查询
阅读量:5916 次
发布时间:2019-06-19

本文共 1694 字,大约阅读时间需要 5 分钟。

什么叫即席查询

这个仅当是笔记

以前一直不知道什么叫即席查询,今天重新看了一遍《SQLSERVER企业级管理平台》,才明白什么叫“即席查询”

下面这句话是我个人总结的:

什么叫即席查询

AD-HOC :以单独的SQL语句的形式执行的查询就是即席查询,比如说:在C#程序里嵌入的SQL语句,或者在SSMS里的新建查询窗口

自己键入的SQL代码就是即席查询。

而将SQL代码放入存储过程里面,以存储过程或者函数或者触发器来执行的查询就不是即席查询,即席:当场,就是当场去查询,当然,这个当场不是当场写代码的意思啦

-------------------------------------------华丽的分割线---------------------------------------------------------

那么,即席查询是不是没有执行计划的缓存的呢?

在《SQLSERVER企业级管理平台》里是这样说的

adhoc:即席查询

Adhoc语句

一组包含select,insert,update,delete的批处理指令。对这样的指令,只有前后完全一致
包括字母的大小写,空格,回车换行都一致,SQL才认为是两条一样的语句,才能够重用执行计划。所以这个要求还是挺高的

1 --例如,运行下面的指令,连续两次查询sys.[syscacheobjects]视图2 DBCC freeproccache3 GO4 SELECT * FROM sys.[syscacheobjects]5 go6 SELECT * FROM [sys].[syscacheobjects]7 go

在第二个结果集里会看到两个adhoc的执行计划。他们的差别就在于一个有回车一个没有回车

但是如果语句是一样的,那么第二句话就可能会重用前面的执行计划。所以adhoc语句并不一定没有执行计划的重用

1 --例如下面,把同样的一句话跑两遍,会发现只有一个执行计划,而且他被使用过两次2 --(字段usecount=2)3 4 DBCC freeproccache5 GO6 SELECT  * FROM sys.[syscacheobjects]7 go8 SELECT * FROM sys.[syscacheobjects]9 go

SQL2005以后,可以在单个数据库上开启强制参数化。也就是说,对于在这个数据库下运行的大部分语句,

SQL都会先参数化,再运行。如果应用经常用adhoc方式调用一样的语句,强制参数化可能会有所帮助

 

 ----------------------------------------------华丽的分割线------------------------------------------------------------------------

 那么分布式查询会不会重用执行计划呢?

我使用下面代码测试了一下

1 --第一次执行的时候,先清空执行计划缓存,第二次执行就要把DBCC freeproccache注释掉 2 DBCC freeproccache 3 GO 4  5  6 SELECT * FROM  7 OPENROWSET('microsoft.jet.oledb.4.0','C:\Users\Administrator\Desktop\Course.mdb';'admin';'',Course_baseinfo)  8 GO 9 10 SELECT [cacheobjtype],[objtype],[dbid],[usecounts],[sql]  FROM sys.[syscacheobjects]11 WHERE [dbid]=112 go

根据usecounts字段,每执行一次都会递增,说明是有重用执行计划的

附上测试用的mdb文件,记得使用分布式查询的时候需要安装office的哦,如果是64位操作系统,需要安装64位 Microsoft.ACE.OLEDB.12.0

文件地址:

 如果有不对的地方,欢迎大家拍砖o(∩_∩)o

转载地址:http://jrgpx.baihongyu.com/

你可能感兴趣的文章
使用nginx—搭建YUM仓库
查看>>
测试人员必学的软件快速测试方法(二)
查看>>
linux下以RPM包安装Oracle 客户端
查看>>
28. PowerShell -- 注册表操作
查看>>
搭建 android sdk环境
查看>>
第14章 grep、sed、awk 正则表达式
查看>>
ant_Jmeter持续集成测试报告优化之添加throughput显示
查看>>
一个=号引发的错误.......
查看>>
CPU显卡内存与3DMAX渲染的关系
查看>>
Hive(一):Hive的安装部署
查看>>
Tomcat9 多端口 多项目
查看>>
cURL: Learning..
查看>>
Codeforces Round #219 (Div. 1) A. Counting Kangaroos is Fun 【二分】
查看>>
Html基础
查看>>
wiki----为用户设置管理员权限
查看>>
《图像处理实例》 之 局部极值提取
查看>>
java 常见几种发送http请求案例[转]
查看>>
更改Visual Studio 2010/2012/2008的主题设置
查看>>
win7系统安装hadoop
查看>>
day5作业购物商城+ATM
查看>>