您的位置: 首页 >> 新闻中心 >> 计算机 >> IT认证 >> 厂商认证 >> Oracle认证
针对Oracle数据库的优化器详细介绍
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点优惠价报名
中软培训 ORACLE9i数据库电话预约海淀学院南路¥8624
东方瑞通 Oracle 9i DBA电话预约海淀区知春路¥6566
东方瑞通 Oracle 9i DBA-1 SQL与PL/SQL电话预约海淀区知春路¥1470
东方瑞通 Oracle 9i DBA-2 管理基础一电话预约海淀区知春路¥1960
东方瑞通 Oracle 9i DBA-2 管理基础二电话预约海淀区知春路¥2156
    本文的目的:
  
    1、说一说Oracle的Optimizer及其相关的一些知识。
    2、回答一下为什么有时一个表的某个字段明明有索引,当观察一些SQL的执行计划时,发现确不走索引的问题。
    3、如果你对 FIRST_ROWS、 ALL_ROWS这两种模式有疑惑时也可以看一下这篇文章。
  
   开始吧:
  
    Oracle在执行一个SQL之前,首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化器(Optimizer)来完成的。不同的情况,一条SQL可能有多种执行计划,但在某一时点,一定只有一种执行计划是最优的,花费时间是最少的。相信你一定会用Pl/sql Developer、Toad等工具去看一个语句的执行计划,不过你可能对Rule、Choose、First rows、All rows这几项有疑问,因为我当初也是这样的,那时我也疑惑为什么选了以上的不同的项,执行计划就变了?
  
   1、优化器的优化方式
  
    Oracle的优化器共有两种的优化方式,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO)。
  
   A、RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。
   B、CBO方式:依词义可知,它是看语句的代价(Cost)了,这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小 、有少行、每行的长度等信息。这些统计信息起初在库内是没有的,是你在做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些我们应及时更新这些信息。在Oracle8及以后的版本,Oracle列推荐用CBO的方式。
    我们要明了,不一定走索引就是优的,比如一个表只有两行数据,一次IO就可以完成全表的检索,而此时走索引时则需要两次IO,这时对这个表做全表扫描(full table scan)是最好的。
  
   2、优化器的优化模式(Optermizer Mode)
  
    优化模式包括Rule,Choose,First rows,All rows这四种方式,也就是我们以上所提及的。如下我解释一下:
    Rule:不用多说,即走基于规则的方式。
    Choolse:这是我们应观注的,默认的情况下Oracle用的便是这种方式。指的是当一个表或或索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别的小,而且相应的列有索引时,那么就走索引,走RBO的方式。
    First Rows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。
    All Rows:也就是我们所说的Cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有的行,从总体上提高查询的吞吐量。没有统计信息则走基于规则的方式。
  
   3、如何设定选用哪种优化模式
  
   a、Instance级别
    我们可以通过在init.ora文件中设定OPTIMIZER_MODE=RULE、OPTIMIZER_MODE=CHOOSE、OPTIMIZER_MODE=FIRST_ROWS、OPTIMIZER_MODE=ALL_ROWS去选用3所提的四种方式,如果你没设定OPTIMIZER_MODE参数则默认用的是Choose这种方式。
  
   B、Sessions级别
    通过SQL> ALTER SESSION SET OPTIMIZER_MODE=;来设定。
  
   C、语句级别
    这些需要用到Hint,比如:
    
    SQL> SELECT /*+ RULE */ a.userid,
    2   b.name,
    3   b.depart_name
    4   FROM tf_f_yhda a,
    5        tf_f_depart b
    6   WHERE a.userid=b.userid;
  
   4、为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢?如何解决呢?
  

本新闻共2页,当前在第1页  1  2

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:恢复只有完好数据文件的oracle数据库
下一篇:可预见的Oracle应用程序的性能优化
 相关新闻
·冷眼看Oracle认证 到底该不该入行?·辅导:在Oracle里加快SQL执行的三种方法
·Oracle认证:巧取指定记录与外关联查询·为什么要成为Oracle认证专家?
·一套实现Oracle异地数据自动备份方案·java-oracle中几十个实用的PL/SQL
·Oracle全文索引查询模板的使用·Oracle的多个未明安全漏洞列表一览
·入侵Oracle数据库时常用的操作命令·经验总结:学好Oracle数据库六要诀
·如何快速在oracle中实现自动增长列·ORACLE中常用的SQL语法和数据对象
·Oracle11g的新特性:Database和SQL重演·如何查询Oracle各组件的版本信息
·Oracle数据库设计开发阶段性能优化策略·可预见的Oracle应用程序的性能优化
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·如何在Oracle10g中通过网络连接导入数据
·如何使用Oracle10gR2InstantClientLight
·实例讲解Oracle里抽取随机数的多种方法
·Oracle10g新特性之虚拟专用数据库
·Oracle建立二进制文件索引的方法
·Oracle8i中字符集乱码问题析及其解决办法
·为什么有时Oracle数据库不用索引来查找数
·Oracle10g第2版新特性之SQL和PLSQL
·Oracle10g第2版新特性之可管理性特性
·Oracle数据库删除重复记录的方法
相关试题
·2009年国家公务员考试行政模拟试卷一参考
·2009年国家公务员考试行政模拟试卷二
·2009年国家公务员考试行政模拟试卷一
·2009年国家公务员考试申论模拟试卷一参考
·2009年国家公务员考试申论模拟试卷一
·2009年国家公务员考试申论模拟试卷及参考
·2009年国家公务员考试模拟试卷答案之公共
·2009年国家公务员考试模拟试卷答案之公共
·2009年国家公务员考试模拟试卷之公共科目
·2009年国家公务员考试行政模拟试卷二参考
相关热贴
·微软资格论证模拟题:70-210试题
·SUN认证简介
·三大计算机认证考试侧重不同 需理智选择
·Adobe认证简介
·Microsoft认证考试特点与价值
·为什么要获得认证
·IBM认证介绍
·全国计算机等级考试评卷、成绩处理和证书
·给版块加点资料吧——CCIE考试介绍
·排除舆论误导 走出IT考证的五大误区