-
sql语句大全之SQL Server查询计划系列之——逻辑操
操作符描述SQLServer如何执行一个查询或数据操作(DML)语句。查询优化器用操作符来建立生成该语句结果集的查询计划,或执行DML语句中确定的操作。查询计划是一个由物理操作符组成的树形结构。用户可以通过SET SHOWPLAN、SSMS(SQL ServerManagement Studio)中图形执行计划选项或SQL Server嗅探器(Profiler)中Showplan事件类来查看查询计划。
操作符分为逻辑操作符(LogicalOperators)和物理操作符(Physical Operators)。
1. 逻辑操作符
逻辑操作符描述处理一条语句时所用的关系代数。换言之,逻辑操作符从概念上描述需要执行什么操作。
2. 物理操作符
物理操作符实施逻辑操作符描述的操作。每个物理操作符为一个执行操作的对象或程序。例如,一些物理操作符存取表、索引或视图的列或行。其他物理操作符执行其他类似计算、汇聚、数据完整性检查或连接。物理操作符有与之相关的成本(Costs)。
物理操作符初始化、收集数据并关闭。确切讲,物理操作符能回答如下三种方法调用。
1) Init(): Init() 方法导致一个物理操作符完成自身初始化,并创建任何需要的数据结构。虽然物理操作符可以接收很多Init()调用,但一般来说,一个物理操作符只接收有个Init()。
2) GetNext(): GetNext()方法导致一个物理操作符获取第一或后续的数据行。物理操作符可以接收零或多个GetNext()调用。
3) Close(): Close()方导致一个物理操作执行一些清理操作并将其本身关闭。一个物理操作符只能接收有个Close()调用。
物理操作符相关注意事项
1) GetNext()方法返回一行数据,且其被调用次数作为通过SET STATISTICS PROFILE ON或SETSTATISTICS XML ON设置而产生的Showplan输出中的ActualRows出现。
2) 出现于Showplan输出中的ActualRebinds和ActualRewinds指Init()方法被调用的次数。除非一个操作符为循环连接(Loop Join)的内行源,ActualRebinds为1且ActualRewinds为0。如果一个操作符为循环连接的内行源,重新绑定(rebinds)与重绕(rewinds)的和应该等于该循环连接外行源的行数。重新绑定是指连接中一个或多个相关参数改变时内行源必须被重新评估。重绕是指没相关参数改变时可以重用内行源之前的结果。ActualRebinds与ActualRewinds出现于SETSTATISTICS XML ON设置而产生的Showplan输出中。它们仅在Nonclustered Index Spool、Remote Query、Rows CountSpool、Sort、Table Spool和Table-valuedFunction操作中被填充。当StartupExpression属性被设置为TRUE时, ActualRebinds与ActualRewinds在Assert和Filter操作符中也许会被填充。当ActualRebinds与ActualRewinds出现于XMLShowplan中时,它们可以和EstimateRebinds 与EstimateRewinds相比较。当它们并不存在时,则EstimateRows可与ActualRows相比较。注意,当它们不存在时,实际图形Showplan输出中actual rebinds与actualrewinds则显示为0。
3) 相关计数器ActualEndOfScans仅在SETSTATISTICS XML ON设置而产生的Showplan输出中可用。当物理操作符到达其数据流末端时,该计数器将被增加1。物理操作符能到达其数据流末端0、1或多次。就像rebinds和rewinds, 仅当该操作符为循环连接的内行源时,该末端扫描(end of scans)数才可能大于1。末端扫描数应该小于等于rebinds 与rewinds之和。
---------------------
作者:lhdz_bj
来源:CSDN
原文:https://blog.csdn.net/tuning_optmization/article/details/79337031
版权声明:本文为博主原创文章,转载请附上博文链接!
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式