oracle执行计划

查看执行计划:
1.使用plsql developer,按F5即可查看
可通过 工具-首选项-计划窗口 来配置执行计划展示的字段
2.explain plan for(待分析的sql语句);select * from table(dbms_xplan.display);

执行顺序:

表访问方式:
TABLE ACCESS FULL 全表扫描
TABLE ACCESS BY ROWID 通过ROWID扫描
TABLE ACCESS BY INDEX SACN 通过索引扫描

ROWID:由Oracle自动加在表中每行最后的一列伪列,不能进行增、删、改的操作。一旦一行数据插入后,则其对应的ROWID在该行的生命周期内是唯一的,即使发生行迁移,该行的ROWID值也不变。ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID可以快速定位到目标数据上,这也是Oracle中存取单行数据最快的方法。

索引扫描分为两步:
Ⅰ:扫描索引得到对应的ROWID
Ⅱ:通过ROWID定位到具体的行读取数据
索引扫描种类:
INDEX UNIQUE SCAN(索引唯一扫描)
表中某字段存在 UNIQUE、PRIMARY KEY 约束时,Oracle常实现唯一性扫描;
INDEX RANGE SCAN(索引范围扫描)

INDEX FULL SCAN(索引全扫描)
全索引扫描只有在CBO模式下才有效
INDEX FAST FULL SCAN(索引快速扫描)
扫描索引中的所有的数据块,与 INDEX FULL SCAN 类似,但是一个显著的区别是它不对查询出的数据进行排序
INDEX SKIP SCAN(索引跳跃扫描)

Oracle中的优化器是SQL分析和执行的优化工具,它负责生成、制定SQL的执行计划。
Oracle的优化器有两种:
RBO(Rule-Based Optimization) 基于规则的优化器
RBO有严格的使用规则,只要按照这套规则去写SQL语句,无论数据表中的内容怎样,也不会影响到你的执行计划;换句话说,RBO对数据“不敏感”,它要求SQL编写人员必须要了解各项细则;RBO一直沿用至ORACLE 9i,从ORACLE 10g开始,RBO已经彻底被抛弃。

CBO(Cost-Based Optimization) 基于代价的优化器
CBO是一种比RBO更加合理、可靠的优化器,在ORACLE 10g中完全取代RBO;
CBO通过计算各种可能的执行计划的“代价”,即COST,从中选用COST最低的执行方案作为实际运行方案;它依赖数据库对象的统计信息,统计信息的准确与否会影响CBO做出最优的选择,也就是对据“敏感”。

你可能感兴趣的:(oracle执行计划)