性能调优第三篇-执行计划常见操作符

原创 2017年09月16日 18:09:34

前言


前面的文章知道了如何格式化,和如何查看执行计划。这篇文章主要介绍常见的操作符


操作符

SQL Server执行计划就是一组操作符构成的。每个操作符实现一个基本操作,例如从表中扫描数据、在表中更新数据、过滤或聚合数据,或者连接两个数据集。操作符有几十种。迭代器可以没有子节点,也可以有有一个,两个,或更多的子节点;最后组合成执行计划的树。通过构建适当的查询计划,SQL Server可以执行任何SQL语句。如下图中:

每一个框里的就是一个操作符



执行计划的选择

某些语句经常有许多有效的查询计划。查询优化器是在一定时间内选择相对最优的查询计划。对于某些特别复杂的SQL语句,他的查询计划可能有非常多。优化器也很难在短时间内产生真正最好的执行计划.所以我们会发现有很多复杂语句的执行计划选择不正确,导致查询非常缓慢。所以我们写SQL 语句时:尽量不要写得过于复杂,可以用临时表,对复杂的语句进行分拆


聚集索引扫描

如下图语句,表上有聚集索引,且 没有任何筛选条件来使用索引查找。只能对表进行扫描,来获取需要的数据,就会使用这种操作符.需要注意的是:聚集索引扫描基本上等价于表扫描。(因为聚集索引可以认为就是数据本身)。会对整个表的数据进行扫描一次。具体的区别在后续讲索引的地方详细介绍。


表扫描

和聚集索引扫描类似,唯一的区别是此时表上没有聚集索引的时候,操作符就会显示表扫描


索引扫描

索引扫描其实就是非聚集索引扫描。通常,索引扫描的效率比聚集索引扫描更好。因为非聚集索引不会包含表中索引的数据。这会使得扫描的页数会少很多。



索引查找

不管是聚集索引查找还是索引查找.都是通过索引直接能找到查找到数据。通常来讲索引查找比索引扫描效率更高。所以,当我们发现一个看到一个SQL 后面有跟具体的筛选条件例如:WHERE ID=1  而此时对表上使用的是表扫描或者聚集索引扫描,那么就要考虑索引建立是否合理了。

但,这不是绝对的。这某些场景中,扫描比查找更快。




总结

总的来说,以上操作符的优先级如下:索引查找  > 索引扫描>表扫描=聚集索引扫描 。这几个主要是跟索引相关的操作符。后续还会在补充。

版权声明:本文为博主原创文章,未经博主允许不得转载。

SQL Server读提交快照隔离级别的注意事项

当数据库中存在大量面积LCK_M_S 共享锁的时候,我们经常会选择使用读提交快照隔离级别,来解决阻塞的问题.但是所有技术都是使用场景的。在下面的场景下,使用读提交快照,就可能出现错误。...

性能调优系列文章目录

前言 之前写了很多文章都是想到什么,或者最近遇到什么实际案例就写相关的实战场景。 比如: Trim的优化 ,Sleeping会话造成的阻塞 我决定,整理一个性能调优文章列一个大纲,争取在一个月之内写...

性能调优分析之:Oracle SQL执行计划报告生成器

Oracle SQL执行计划分析器功能的创建3步曲: 1 首先,编译XYG_ALD_SESS_PKG的Package头。 (XYG_ALD_SESS_PKG.sql) 2 接着要建立好下面的4个...
  • samt007
  • samt007
  • 2017年04月07日 13:55
  • 249

数据库性能调优技术 --深入理解嵌套循环执行计划

一、概述 这篇文章是数据库性能调优技术的第三篇。上一篇文章讲解了深入了解单表执行计划,单表执行计划是理解多表执行计划的基础。 两张表的连接有三种执行方式:1)嵌套循环连接;2)散列连接;3)归并连...

oracle笔记整理14——性能调优之oracle执行计划

1) 优化器(optimizer) a) RBO(rule-based optimizer)方式:基于规划的优化方式 所遵循的是oracle内部预定的一些规则. b) CBO(cost-base...

数据库性能调优技术 --深入理解单表执行计划

一、概述 这篇文章是数据库性能调优技术的第二篇。上一篇讲解的索引调优是数据库性能调优技术的基础。这篇讲解的深入理解单表执行计划,是数据库性能调优的有力工具。查询语句可以有多种可选执行计划,如何选择效...

oracle性能调优-执行计划

这几天跑存储过程,有时间一跑就是几十分钟,等的确实有点辛苦;于是就想研究一下sql执行的性能,看看存储过程执行慢的问题出在什么地方。     要进行oracle性能调优,不用多说,第一步肯定是看执行计...

数据库性能调优技术 --深入理解散列连接执行计划

一、概述 这篇文章是数据库性能调优技术系列的第四篇。上一篇文章讲解了深入理解嵌套循环连接执行计划。 上一篇文章中提到两张表的连接有三种执行方式:1)嵌套循环连接;2)散列连接;3)归并连接。散列连...

SQL Server 性能调优 之执行计划(Execution Plan)调优

SQL Server 性能调优 之执行计划(Execution Plan)调优
  • sqlchen
  • sqlchen
  • 2014年06月19日 15:53
  • 2116
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:性能调优第三篇-执行计划常见操作符
举报原因:
原因补充:

(最多只允许输入30个字)