网站首页 > 数据库 / 正文
执行计划执行计划是一条sql语句在ORACLE中的执行过程或访问路径的描述。即对一个sql语句,从执行计划可以看出oracle完成任务的详细方案。如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。 看懂执行计划也就成了SQL优化的先决条件。 通过执行计划定位性能问题,定位后就通过建立索引、修改sql等解决问题。相关概念-单表访问路径
- TABLE ACESS FULL 全表扫描:没有建索引或者没有走上索引, 在较大的表上非常容易出现性能问题,应该尽量避免。
- index range scan 索引范围扫描 :走非唯一索引,或者是唯一索引使用了range操作(< > between等)
- index unique scan 索引唯一扫描:可以定位到单个ROWID。如果存在UNIQUE 或PRIMARY KEY 约束,就可以走索引唯一扫描
- index skip scan 索引跳跃扫描 :往往是走组合索引,但where条件中没有包括组合索引中所有的列
- index full scan 索引全扫描
- index fast full scan 索引快速全扫描
相关概念-表的连接方式
- nestLoop 嵌套连接:可以理解成两个嵌套的for循环,嵌套连接适合于返回少量数据,并且内部表关联字段上存在索引,外部表很小或者走索引后返回很少数据。成本约等于N次索引(N为外部表返回的记录数)
- hash join:
总成本为两张表单表访问路径的总成本!即使不存在索引,也就是两张表的全扫,与记录数无关。因此Hash连接适合返回大量数据,不要求表关联字段存在索引,Hash连接用在返回少量数据上很吃亏
执行计划的解读
- 对同一凹层,先上后下执行
- 对不同凹层,先里后外执行
如何查看sql语句的执行计划
- 直接解析SQL语句.
Explain plan for XXX;
Select * from table(dbms_xplan.display); - 根据SQL_ID查询,
select * from table
(dbms_xplan.display_cursor('&sql_id',0,
'allstats last')); - 从视图v$sql_plan 中获取。
- sqplus中可以使用set autotrace on,自动获取执行计划和统计信息
Tags:oracle的定义
猜你喜欢
- 2024-11-26 公司培训oracle硬解析、软解析、软软解析,这样解释就可以了
- 2024-11-26 Oracle数据库扩展语言PL/SQL之常量与变量
- 2024-11-26 oracle专家课程 思庄
- 2024-11-26 Oracle 19c Concepts (1)
- 2024-11-26 ORACLE体系 - 4
- 2024-11-26 Oracle P6培训系列:15定义资源库
- 2024-11-26 周日福利!ORACLE12c学习指南,初学者必备
- 2024-11-26 ORACLE 体系 - 11
- 2024-11-26 关于Oracle 数据库物化视图和物化视图日志总结
- 2024-11-26 【赵强老师】Oracle RAC集群的概念