《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

时间:2021-06-24 07:39:52
关于执行计划,最重要的 点是要读懂执行的顺序
这里我们先定义两种类型: 1. 单独型; 2.联合型


1. 单独型

请看下面 SQL 执行计划 Id=3 处,通过索引定位 JOB= C LERK’, 然后观察 Id=Z 处,通过
rowid 回到表中得到 sa
l 等其他列,然后根据 sa l <3000 的条件再过滤部分数据。最后完成了
dept no 动作,请看 Id=l 处。
《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划
我们把这种执行计划称之为单独型,有一种父子的关系 , 执行计划中 Id=l, Id= 2 , I d = 3 有一定的偏移

哦,这就是单拙型的特征。

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

执行顺序为3-2-1 ,由远到近地执行


2. 联合型

( 1 )联合型的非关联型
《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划
行计划中, Id=2, Id=3, Id=4 是对齐无偏移的,这就是联合型的特征。
请注意看 Id=2 处的 A一「ows 为 14 ,可是 Id=3 处的Starts 依然为 1 ,表示只访问一次,和这个 14 的结果毫无关系。

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

这里顺序很显然是 2-3-4-1


( 2) 联合型的关联型

1 ) 联合型的关联型( NL)
接下来的例子比较经典,请看 Id=2 和 Id=3 处,这里显然是联合型 ,不过我们再观察,
Id=2 处的 A-Rows 为 10, Id=3 处的 Starts=10 ,说明 EMP 访问的结果集返回多少条, DEPT 表就
被访问多少次,这是有关联的,这就是联合型的关联型。


请看id=3和id=4,这显然是单独性,顺序是先4后3
《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划
执行顺序 2-4-3-1


2) 联合型的关联型 ( FILTER)

3) 联合型的关联型( UPDATE ) 

4) 联合型的关联型( CONNECT BY WITH FLITERING ) 


从执行计划读出效率

1. 返回行与逻辑读比率

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

总共获取1条记录,产生1048次逻辑读,这个肯定有问题!

2. 评估值准确的重要性

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划
评估32条,真实75日08条,非常不准确,执行计划的准确性很让人怀疑

3. 类型转换需认真关注

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划
类型转化,一般都用不到索引,所以是 filter而不是a ccss

4. 请小心递归调用部分

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

产笠7 3 121次递归调用, 这一是SQL函数引发的

5. 注意表的访问次数

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

表被访问了 80016次,偏多了,一般不 型号虑Nl 连接,要考虑Hash连接等 

6. 注意表真实访问行数

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

除了预测错外,要在执行计划中有COUNT STOPKEY关键字 。还可能是
rownum分页查询的执行计划,表示在第 10行就停止前进了

7. 谨慎观察排序与否

《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划

查看SQL是否排序,此处说明在内存 中排序,并未到磁盘申排序








《收获,不止SQL优化》读后笔记---第三章(二)读懂SQL 执行计划