Oracle的优化器有两种优化方式,即基于规则的优化方式(rule-based optimization 简称RBO)和基于代价的优化方式(cost-based optimization 简称CBO),在oralce 8以及以后的版本,Oracle强烈推荐CBO的方式。

▶ RBO方式:oralce在分析语句时所遵循的是oralce内部预定的一些规则,比如我们常见的,where子句中有索引时去走索引。

▶ CBO方式:它是看语句的代价,这里的代价主要是CPU和内存。优化器在判断是否使用这种方式时,主要参照的是表和索引的统计信息。统计信息给出表的大小、有多少行、每行的长度等信息。这些信息起初在库内是没有的,要做analyze才出现的,很多时候过期的统计信息会另优化器做出错误的执行计划,因此需要及时更新统计信息。

注意:走索引不一定是最优的,比如一张表只有两行数据,一次I/O就可以完成表的检索,而此时走索引则需要两次I/O,这时全表扫描(full scan)最好。

优化模式包括rule、choose、first row、all row这四种方式:

▶ Rule:基于规则的方式。

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

▶ First rows:它与choose方式是类似的,所不同的是当一个表有统计信息时,他将以最快的方式返回查询的最先几行,从总体上减少响应的时间。

▶ All rows:也就是我们所说的cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有行,从总体上提高查询的吞吐量,没有统计则走RBO的方式。

设定选择哪种优化模式

① Instance级别

可以通过在init.ora文件中设定OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS设定级别,如果没设定 OPTIMIZER_MODE参数则默认用的是Choose。

使用spfile的情况,使用下面的语句:

alter system set optimizer_mode=choose scope=spfile;

② Sessions级别

通过 ALTER SESSION SET OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS;来设定。

③ 语句级别

用Hint来指定。

当一个表的某个字段有索引,但是执行计划却没有走索引,有以下几个原因:

① 优化模式是all rows方式;

② 表做过analyze,有统计信息;

③ 表很小,Oracle认为没有必要走索引。

优化器的优化方式:http://blog.sina.com.cn/s/blog_46a30a740102w4in.html

Oracle 优化方式的更多相关文章

  1. ORACLE优化器RBO与CBO介绍总结

    RBO和CBO的基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基 ...

  2. oracle优化

    sql语句 优化方式: 1select 语句中避免用"*" oracle在解析时,会将“*”依次转换成所有的列名(数据字典完成)耗时 2尽量多用commit语句 及时提交,释放资源 ...

  3. Oracle优化总结

    本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了ORACLE数据库的优化调整方案.关键词 ORACLE数据库 环境调整 ...

  4. Oracle优化的几个简单步骤

    数据库优化的讨论可以说是一个永恒的主题.资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等.还有的人认为要抓出执行最慢的语句来进行优化.但实际情况 ...

  5. oracle优化原则(二)

    SQL优化原则 二.SQL语句编写注意问题 www.2cto.com 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍.在这些where子句中,即使某些列存在索引,但是由于编写了劣质 ...

  6. SDE+ORACLE优化配置

    原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...

  7. Oracle优化器介绍

    Oracle优化器介绍 本文讲述了Oracle优化器的概念.工作原理和使用方法,兼顾了Oracle8i.9i以及最新的10g三个版本.理解本文将有助于您更好的更有效的进行SQL优化工作. RBO优化器 ...

  8. ORACLE 优化

    本文主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从九个不同方面较全面地总结了 ORACLE数据库的优化调整方案. 关键词 ORACLE数据库 环境 ...

  9. oracle 优化方法总结

    分析和优化的基本步骤如下: 1.如果是SQL语句的写法问题,我们可以通过在不更改业务逻辑的情况下改写SQL来加以解决: 2.如果是不必要的全表扫描/排序而导致了目标SQL的性能问题,我们可以通过建立合 ...

随机推荐

  1. BUYING FEED

    Problem F: F BUYING FEED Description Farmer John needs to travel to town to pick up K (1 <= K < ...

  2. 微信小程序在sublime开发代码高亮显示

    问题:xxx.wxml 和xxx.wxss在subline中不高亮不显示 如下图,开发起来非常的不方便 解决办法:右下角将Plain Text改为Html,问题解决,可高亮,提高代码可读性,可提示,提 ...

  3. string中执行sql语句

    Spring(JdbcTemplate.class)中的queryForMap().queryForObject().queryForLong().queryForInt()等方法都会去调用publi ...

  4. 003 Longest Substring Without Repeating Characters 最长不重复子串

    Given a string, find the length of the longest substring without repeating characters.Examples:Given ...

  5. Java面向对象_接口应用——策略模式

    概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化. 接口抽象的就是某种方法. OO设计原则:1.面向接口编程  2.封装变化  3.多用 ...

  6. 【JavaEE】Web Service 的工作原理

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  7. 性能测试学习第六天_loadrunner录制的一些问题

    1.录制脚本的两种查看方式(脚本查看和树查看) 2.录制选项 在vugen界面点击开始录制,如下图,点击选项,即进入录制选项界面 重点讨论录制选项下 基于HTML的脚本和基于URL的脚本 注:菜单栏图 ...

  8. 移动开发,Webapp 淘宝手机 rem 布局

    (function (doc, win) { var docEl = doc.documentElement, resizeEvt ="orientationchange"in w ...

  9. tomcat的备份脚本

    reference:Crontab的20个例子  先科普一下date的使用方法,在sh脚本中经常会使用得到 date -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: ...

  10. springboot+Jsp部署linux

    这个springboot部署到linux,我之前一直都是在linux上使用tomcat部署,但是这样部署容易出现EL表达式无法使用导致项目报错:后来发现了一种更简单的方法,就是将项目打成war包,注册 ...