在MSSQL中,查看较慢语句的执行计划,就是一个比较直观的方式,

如果查看执行计划呢:

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

  1. 识别执行计划中开销较大的步骤

  1. 关注较高开销的节点,一般是表扫描、假脱机、排序等运算(如上列中的排序)

b.查看节点之间连接箭头的宽度。

箭头的宽度代表传输的数据量大小。

分析箭头左边的节点为什么需要这么多行,是否可以过滤。

检查箭头的属性,实际的行与估计的行相差很大可能是统计信息过时。

c.寻找hash连接操作。对于小的结果集,嵌套的循环连接通常是首选的连接 技术。

d.寻找书签查找操作。大结果集的书签操作可能造成大量的逻辑读。

e.寻找执行排序操作的步骤。这表明数据没有以正确的排序进行检索。

  1. 分析索引有效性

a.数据检索操作

通过查看执行计划中该表的数据检索机制,来判断对该表的查询是否高效。

  1. 查找优于扫描。

  1. RID查找与键查找

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

  1. 分析连接有效性

a. Hash连接

Hash连接有两个输入—建立输入和探查输入。较小数据量的做为建立输入。

在建立阶段,建立输入被扫描或计算,并在内存中建立hash表,每个行根据计算的hash键值被插入的hash表元中。

在探查阶段,对于每个探查行计算hash键值;与hash表元进行匹配。

b. 合并连接

如果连接输入列上已经排序,优化器会为其选择合并连接,合并连接比  Hash匹配更快。

查询优化器使用hash连接高效处理大的、未排序、没有索引的输入。

c.嵌套循环连接

嵌套循环连接使用一个连接作为外部输入表,另一个作为内部输入表。

外部循环逐行扫描外部输入表,内部循环为每一个外部行执行一次,搜索匹  配行。

如果外部输入数据量较小,内部输入大但有索引,嵌套循环连接时非常有效的。

mssql执行计划查看的一些知识的更多相关文章

  1. MSSQL优化之————探索MSSQL执行计划

    最近总想整理下对MSSQL的一些理解与感悟,却一直没有心思和时间写,晚上无事便写了一篇探索MSSQL执行计划,本文讲执行计划但不仅限于讲执行计划. 网上的SQL优化的文章实在是很多,说实在的,我也曾经 ...

  2. PL/SQL执行计划查看

    一.如何查看PLSQL的执行计划 在SQl Window窗口输入sql语句,然后按键"F5",就会进入执行计划查看界面. 二.界面说明 首先我们看第二行有几个属性可以选“Tree” ...

  3. 执行计划查看,autotrace工具的使用

    ---工具的简单介绍   001啥是autotrace,翻译自动跟踪,跟踪什么额? SQL的执行过程   我们老是讲ORACLE体系结构里面,共享池有个组件库高速缓存,存放SQL语句执行计划   什么 ...

  4. MySql 的SQL执行计划查看,判断是否走索引

    在select窗口中,执行以下语句: set profiling =1; -- 打开profile分析工具show variables like '%profil%'; -- 查看是否生效show p ...

  5. [terry笔记]oracle里的执行计划-查看

    内容主要来自看书学习的笔记,如下记录了常见查询执行计划的方法. 2.2 如何查看执行计划 1.explain plan 2.dbms_xplan包 3.autotrace 4.10046事件 5.10 ...

  6. 看懂MSSQL执行计划,分析SQL语句执行情况

    打开SQL执行计划窗口 执行计划的图表是从右向左看的 SQL Server有几种方式查找数据记录 [Table Scan] 表扫描(最慢),对表记录逐行进行检查 [Clustered Index Sc ...

  7. mysql 执行计划查看

    使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈.explain执行计划包含的信息 其中最重要的字段为:id ...

  8. mysql执行计划查看工具explain

    在优化sql语句时,我们经常会用到explain语句,这里对explain语句做一个详细的总结说明. The EXPLAIN statement provides information about ...

  9. oracle 执行计划查看

    1)  sql command窗口里explain plan for select * from emp: 2) select * from table(dbms_xplan.display);

随机推荐

  1. (转)关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、目录结构、设置压缩和对中文文件名的支持、以及Catalina这个名字的由来……等)

    转自:http://itfish.net/article/41668.html   总结Tomcat的体系架构.处理http请求的过程.安装和配置.目录结构.设置压缩和对中文文件名的支持.以及Cata ...

  2. 关于github在客户端不小心删除新仓库,重建后无法上传解决方法

    不小心删除了如果直接在客户端重建一个不行,首先找出本地新仓库,删除,然后在重新再客户端建立一个. 但此时如果两仓库名字一样,会发现无法上传. 此时应该在网页打开github,点击进入之前删除的仓库(云 ...

  3. 基于itchat的微信群聊小助手基础开发(一)

    前段时间由于要管理微信群,基于itchat开发了一个简单的微信机器人 主要功能有: 图灵机器人功能 群聊昵称格式修改提示 消息防撤回功能 斗图功能 要开发一个基于itchat的最基本的聊天机器人,在g ...

  4. tomcat启动报错Several ports (8080, 8009) required by Tomcat v6.0

    tomcat启动报错 如下图: 问题:8080.8009端口已经被占用. 解决办法: 1.在命令提示符下,输入netstat -aon | findstr 8080 2.继续输入taskkill -F ...

  5. highcharts框架使用总结

    Highcharts官网地址:https://www.hcharts.cn/products/highcharts首先需要引入jQuery框架,然后包含Highcharts框架需要使用到的js文件,最 ...

  6. thinkphp3.2开发网页实现第三方登录

    1.在要添加登录的html里添加登录按钮: <a href="{:U('Public/login/',array('type'=>'weixin'))}">< ...

  7. JavaScript数组去重方法汇总

    1.运用数组的特性 1.遍历数组,也遍历辅助数组,找出两个数组中是否有相同的项,若有则break,没有的话就push进去. //第一版本数组去重 function unique(arr){ var r ...

  8. angular高级篇之transclude使用详解

    angular指令的transclude属性是一个让初学者比较难以理解的地方,transclude可以设置为false(默认),true或者对象三种值,如果不设该属性就默认为false,也就是说你不需 ...

  9. angular指令中的preLink函数和postLink函数

    指令模板选项有complie和link两个字段,两者之间存在如下关系: 当compile字段存在时,link字段将被忽略,compile函数的返回值将作为link字段. 当compile不存在,lin ...

  10. LCIS(区间合并)

    LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...