1、什么是执行计划
用户提交的 sql 语句,数据库查询优化器,经过分析生成多个数据库可以识别的高效执行查询方式。然 后优化器会在众多执行计划中找出一个资源使用最少,而不是最快的执行方案,给你展示出来,可以是 文本格式,也可以是图形化的执行方案。
2、为什么要读懂执行计划?
首先执行计划让你知道你复杂的 sql 到底是怎么执行的,有没有按照你想的方案执行,有没有按照最高 效的方式执行,使用了众多索引的哪一个,怎么排序,怎么合并数据的,有没有造成不必要资源浪费等 等。官方数据显示,执行 t-sql 存在问题,80%都可以在执行计划中找到答案。
3、这对于图形化的执行计划分析
执行计划,可以以文本,图形化展示出来。我们主要以图形化执行计划主导进行分析,然而执行计划中 包含78个可用的操作符。
图片介绍:https://msdn.microsoft.com/zh-cn/library/ms175913(v=sql.90).aspx
图标 | 运算符 |
Arithmetic Expression【算术表达式】 | |
Assert【明确肯定】 | |
Bitmap【位图】 | |
Bookmark Lookup【书签查找】 | |
Clustered Index Delete【聚集索引删除】 | |
Clustered Index Insert【聚集集索引插入】 | |
Clustered Index Scan【聚集集索引扫描】 | |
Clustered Index Seek【聚集索引查找】 | |
Clustered Index Update【聚集索引更新】 | |
Collapse【崩溃】 | |
Compute Scalar【标量计算】 | |
Concatenation【串联】 | |
Constant Scan【恒定扫描】 | |
Delete【删除】 | |
Deleted Scan【删除扫描】 | |
Eager Spool | |
Filter【过滤】 | |
Hash Match【哈希匹配】 | |
Hash Match Root【哈希匹配根】 | |
Hash Match Team【哈希匹配团队】 | |
Insert【插入】 | |
Inserted Scan【插入的扫描】 | |
Iterator Catchall【迭代器捕获】 | |
Lazy Spool | |