一、定义执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述,注意,是查询语句。二、查看执行计划1)打开PL/SQL数据库管理工具;2)在SQL窗口选中一条 SELECT 语句后,或者选中Tools > Explain Plan,...
一、定义
执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述,注意,是查询语句。
二、查看执行计划
1)打开PL/SQL数据库管理工具;
2)在SQL窗口选中一条 SELECT 语句后,或者选中Tools > Explain Plan,或者按F5即可查看刚刚执行的这条查询语句的执行计划;
3)打开执行计划后,可以点击配置按钮进行显示配置。如图
三、执行计划分析
1)执行顺序
根据下图中description列的缩进来判断,缩进最多的最先执行,缩进相同时,最上面的最先执行,可以通过点击图中箭头,查看执行顺序
说明:
表访问方式
表访问的几种方式:(非全部)
TABLE ACCESS FULL(全表扫描)
TABLE ACCESS BY INDEX ROWID(通过ROWID的表存取)
INDEX FULL SCAN(索引扫描)
如果sql关联的数据表数据量较大,使用全表扫描会影响交易性能,需要增加索引;
(1)TABLE ACCESS FULL(全表扫描):
Oracle会读取表中所有的行,并检查每一行是否满足SQL语句中的 Where 限制条件;
全表扫描时可以使用多块读(即一次I/O读取多块数据块)操作,提升吞吐量;
使用建议:数据量太大的表不建议使用全表扫描,除非本身需要取出的数据较多,占到表数据总量的 5% ~ 10% 或以上
(2)TABLE ACCESS BY ROWID(通过ROWID的表存取):
行的ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID可以快速定位到目标数据上,这也是Oracle中存取单行数据最快的方法;
(3)INDEX FULL SCAN(索引扫描):
索引扫描分五种:
INDEX UNIQUE SCAN(索引唯一扫描)
INDEX RANGE SCAN(索引范围扫描)
INDEX FULL SCAN(索引全扫描)
INDEX FAST FULL SCAN(索引快速扫描)
INDEX SKIP SCAN(索引跳跃扫描)
a)INDEX UNIQUE SCAN(索引唯一扫描):
针对唯一性索引(UNIQUE INDEX)的扫描,每次至多只返回一条记录;
表中某字段存在 UNIQUE、PRIMARY KEY 约束时,Oracle常实现唯一性扫描;
b)INDEX RANGE SCAN(索引范围扫描):
使用一个索引存取多行数据;
发生索引范围扫描的三种情况:
在唯一索引列上使用了范围操作符(如:> >=