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

前言


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


操作符

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

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



执行计划的选择

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


聚集索引扫描

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


表扫描

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


索引扫描

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



索引查找

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

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




总结

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值