mssql执行计划查看的一些知识
在MSSQL中,查看较慢语句的执行计划,就是一个比较直观的方式,
如果查看执行计划呢:

1.从右到左,从上到下的顺序阅读执行计划
2.执行计划中每个图标代表一个运算符,总开销为100%
3.数据从右向左在两个操作符之间流动,由一个连接箭头表示。
4.操作符之间连接箭头的宽度是传输行数的图形表示。
5.同一列的两个操作符之间的连接机制将是嵌套的循环连接,Hash    匹配或者合并连接。
- 识别执行计划中开销较大的步骤
 

- 关注较高开销的节点,一般是表扫描、假脱机、排序等运算(如上列中的排序)
 
b.查看节点之间连接箭头的宽度。
箭头的宽度代表传输的数据量大小。
分析箭头左边的节点为什么需要这么多行,是否可以过滤。
检查箭头的属性,实际的行与估计的行相差很大可能是统计信息过时。
c.寻找hash连接操作。对于小的结果集,嵌套的循环连接通常是首选的连接 技术。
d.寻找书签查找操作。大结果集的书签操作可能造成大量的逻辑读。
e.寻找执行排序操作的步骤。这表明数据没有以正确的排序进行检索。
- 分析索引有效性
 
a.数据检索操作
通过查看执行计划中该表的数据检索机制,来判断对该表的查询是否高效。
- 查找优于扫描。
 

- RID查找与键查找
 
键查找优于rid查找,建议对表都加上聚集索引

- 分析连接有效性
 
a. Hash连接

Hash连接有两个输入—建立输入和探查输入。较小数据量的做为建立输入。
在建立阶段,建立输入被扫描或计算,并在内存中建立hash表,每个行根据计算的hash键值被插入的hash表元中。
在探查阶段,对于每个探查行计算hash键值;与hash表元进行匹配。
b. 合并连接

如果连接输入列上已经排序,优化器会为其选择合并连接,合并连接比 Hash匹配更快。
查询优化器使用hash连接高效处理大的、未排序、没有索引的输入。
c.嵌套循环连接

嵌套循环连接使用一个连接作为外部输入表,另一个作为内部输入表。
外部循环逐行扫描外部输入表,内部循环为每一个外部行执行一次,搜索匹 配行。
如果外部输入数据量较小,内部输入大但有索引,嵌套循环连接时非常有效的。
mssql执行计划查看的一些知识的更多相关文章
- MSSQL优化之————探索MSSQL执行计划
		
最近总想整理下对MSSQL的一些理解与感悟,却一直没有心思和时间写,晚上无事便写了一篇探索MSSQL执行计划,本文讲执行计划但不仅限于讲执行计划. 网上的SQL优化的文章实在是很多,说实在的,我也曾经 ...
 - PL/SQL执行计划查看
		
一.如何查看PLSQL的执行计划 在SQl Window窗口输入sql语句,然后按键"F5",就会进入执行计划查看界面. 二.界面说明 首先我们看第二行有几个属性可以选“Tree” ...
 - 执行计划查看,autotrace工具的使用
		
---工具的简单介绍 001啥是autotrace,翻译自动跟踪,跟踪什么额? SQL的执行过程 我们老是讲ORACLE体系结构里面,共享池有个组件库高速缓存,存放SQL语句执行计划 什么 ...
 - MySql 的SQL执行计划查看,判断是否走索引
		
在select窗口中,执行以下语句: set profiling =1; -- 打开profile分析工具show variables like '%profil%'; -- 查看是否生效show p ...
 - [terry笔记]oracle里的执行计划-查看
		
内容主要来自看书学习的笔记,如下记录了常见查询执行计划的方法. 2.2 如何查看执行计划 1.explain plan 2.dbms_xplan包 3.autotrace 4.10046事件 5.10 ...
 - 看懂MSSQL执行计划,分析SQL语句执行情况
		
打开SQL执行计划窗口 执行计划的图表是从右向左看的 SQL Server有几种方式查找数据记录 [Table Scan] 表扫描(最慢),对表记录逐行进行检查 [Clustered Index Sc ...
 - mysql 执行计划查看
		
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈.explain执行计划包含的信息 其中最重要的字段为:id ...
 - mysql执行计划查看工具explain
		
在优化sql语句时,我们经常会用到explain语句,这里对explain语句做一个详细的总结说明. The EXPLAIN statement provides information about ...
 - oracle 执行计划查看
		
1) sql command窗口里explain plan for select * from emp: 2) select * from table(dbms_xplan.display);
 
随机推荐
- Linux中的各种软件安装
			
Linux下的软件形式 Linux上的软件有几种常见的方式 二进制发布包 软件包已经针对具体平台完成了编译和打包,解压后即可以使用,最多去改改配置文件,也是Linux上最通用和常见的软件包发布形式 例 ...
 - LeetCode 563. Binary Tree Tilt (二叉树的倾斜度)
			
Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as the ab ...
 - Appium python自动化测试系列之等待函数如何进行实战(九)
			
9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...
 - Android 6.0运行时权限
			
一.Runtime Permissions Android 6.0在手机安全方面做的一个处理就是增加了运行时权限(Runtime Permissions). 新的权限机制更好的保护了用户的隐私,Goo ...
 - PHP的重载及魔术方法
			
首先你要知道什么是php的魔术方法,它不是变魔术的,如果你想学习变魔术来错地方了哦! 定义:PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法.所以在定义类方法时,除了上述魔术方法,建议不 ...
 - C#中的常识
			
1.快捷键 Ctrl+K+D:快速对齐代码 Ctrl+Z:撤销 Ctrl+S:保存 Ctrl+J:快速弹出智能提示 Shift+End.Shift+Home:快速选中 Ctrl+K+C:注释所选代码 ...
 - Leetcode题解(三)
			
8.String to Integer (atoi) 题目 这道题目关键是要考虑清楚各种输入用例.针对每一种情况,函数都能处理,也就是函数鲁棒性很高.代码如下: class Solution { pu ...
 - keepalived中的脑裂
			
在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体.动作协调的HA系统,就分裂成为2个独立的个体.由于相互失去了联系,都以为是对方出了故障.两个节点上的HA软件像“裂脑人”一样,争 ...
 - 数据库Oracle
			
一. 表空间和数据文件的关系: 文件组成:数据文件,控制文件,数据库日志文件 数据文件:.dbf 包含全部数据库数据(表,索引等),一个数据文件仅与一个数据库关联.一旦建立,只增不减. 表空间(Tab ...
 - mysql数据库第三弹
			
mysql数据库知识拓展 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT ...