Oracle优化器与执行计划

 

Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按照执行计划去执行。分析语句的执行计划的工作是有优化器(Optimizer)来完成的。

 

一、优化器的类型:

Oracle的优化器共有两种优化方式,即基于规则的优化方式(Rule-Based Optimization ,简称RBO)和基于代价的优化方式(Cost-Based Optimization,简称CBO)。

A. RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。

B. CBO方式:是看语句的代价(Cost)了,这里的代价主要指CPU和内存。优化器在判断是否用这种防方式时,主要参照的是表及索引的统计信息,很多的时候过期统计信息会令优化器做出一个错误的执行计划。

在Oracle8及以后的版本,Oracle推荐用CBO的方式。在Oracle10g中,取消了RBO的支持。

 

有一点要明确,不一定走索引就是优的 ,比如一个表只有两行数据,一次IO就可以完成全表的检索,而此时走索引时则需要两次IO,这时对这个表做全表扫描(full table scan)是最好的。

 二、优化器的优化模式(Optermizer Mode)

优化模式包括Rule,Choose,First rows,All rows这四种方式。

Rule:即走基于规则的方式。

Choose:默认情况下Oracle用的是这种方式。当一个表或者索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别小,而且相应的列有索引时,走RBO的方式。

First Rows:它与Choose方式是类似的,所不同的是当一个表有通家信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。

All Rows:all_rows是oracle优化器默认的模式,它将选择一种在最短时间内返回所有数据的执行计划,它将基于整体成本的考虑。

first_rows_n:它是根据成本而不是基于硬编码的规则来选择执行计划。n可以是1/10/100/1000或者直接用first_rows(n)hint指定任意正数。这里的那时我们想获取结果集的前n条记录,这种需求在很多分页语句的需求中会碰到。

 

 SQL*PLUS下使用AUTOTRACE
 
1.AUTOTRACE简介    
AUTOTRACE是SQL*Plus的一项功能,其作用是自动跟踪SQL语句,为SQL 语句生成一个执行计划并且提供与 该语句的处理有关的统计信息。
SQL*Plus AUTOTRACE 可以用来替代 SQL Trace 使用,AUTOTRACE的好处是不必设置跟踪文件的格式,并且它将自动为SQL语句显示执行计划。
AUTOTRACE与执行计划的区别是AUTOTRACE分析和执行语句;而EXPLAIN PLAN仅分析语句,而不负责执行语句。   
AUTOTRACE在SQL*PLUS下执行,使用AUTOTRACE不会产生跟踪文件。
2.配置AUTOTRACE  
(1).确保表PLAN_TABLE已经创建,如果没有则如下创建:
SQL>@D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlxplan.sql
SQL>create public synonym plan_table$ for plan_table;
SQL>grant all on plan_table$ to public;

(2).确保角色plustrace已经创建,如果没有则如下创建:
SQL>@D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\plustrce.sql
SQL>create role plustrace;

3.使用AUTOTRACE
SQL>set autotrace on;
SQL>select count(*) from tab;

 

4. AUTOTRACE设置命令
序号
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值