这里我们先定义两种类型: 1. 单独型; 2.联合型
1. 单独型
请看下面 SQL 执行计划 Id=3 处,通过索引定位 JOB= ’ C LERK’, 然后观察 Id=Z 处,通过rowid 回到表中得到 sa l 等其他列,然后根据 sa l <3000 的条件再过滤部分数据。最后完成了
dept no 动作,请看 Id=l 处。
我们把这种执行计划称之为单独型,有一种父子的关系 , 执行计划中 Id=l, Id= 2 , I d = 3 有一定的偏移
哦,这就是单拙型的特征。
2. 联合型
( 1 )联合型的非关联型行计划中, Id=2, Id=3, Id=4 是对齐无偏移的,这就是联合型的特征。
请注意看 Id=2 处的 A一「ows 为 14 ,可是 Id=3 处的Starts 依然为 1 ,表示只访问一次,和这个 14 的结果毫无关系。
这里顺序很显然是 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
执行顺序 2-4-3-1
2) 联合型的关联型 ( FILTER)
略
3) 联合型的关联型( UPDATE )
4) 联合型的关联型( CONNECT BY WITH FLITERING )
从执行计划读出效率
1. 返回行与逻辑读比率
总共获取1条记录,产生1048次逻辑读,这个肯定有问题!
2. 评估值准确的重要性
评估32条,真实75日08条,非常不准确,执行计划的准确性很让人怀疑
3. 类型转换需认真关注
类型转化,一般都用不到索引,所以是 filter而不是a ccss
4. 请小心递归调用部分
产笠7 3 121次递归调用, 这一般是SQL带函数引发的
5. 注意表的访问次数
表被访问了 80016次,偏多了,一般不 型号虑Nl 连接,要考虑Hash连接等
6. 注意表真实访问行数
除了预测错外,要在执行计划中有COUNT STOPKEY关键字 。还可能是
rownum分页查询的执行计划,表示在第 10行就停止前进了
7. 谨慎观察排序与否
查看SQL是否排序,此处说明在内存 中排序,并未到磁盘申排序