Oracle 的优化器有两种优化方式:
即基于规则的优化方式(Rule-Based Optimization, 简称为 RBO)
和基于代价的优化方式(Cost-Based Optimization, 简称为 CBO), 在 Oracle8 及以后的版本, Oracle 强列推荐用 CBO 的方式
RBO 方式: 优化器在分析 SQL 语句时, 所遵循的是 Oracle 内部预定的一些规则. 比如常见的, 当一个 where 子句中的一列有索引时走索引.
CBO 方式: 它是看语句的代价(Cost), 这里的代价主要指 CPU 和内存. 优化器在判断是否用这种方式时, 主要参照的是表及索引的统计信息. 统计信息给出表的大小、有多少行、每行的长度等信息. 这些统计信息起初在库内是没有的, 是做 analyze 后才出现的, 很多时侯过期统计信息会令优化器做出一个错误的执行计划, 因些应及时更新这些信息.
注意: 走索引不一定就是优的, 比如一个表只有两行数据, 一次 IO 就可以完成全表的检索, 而此时走索引则需要两次 IO, 这时全表扫描(full table scan)是最好.
优化模式包括 Rule、Choose、First Rows、All Rows 四种方式:
Rule: 基于规则的方式.
Choolse: 默认的情况下 Oracle 用的便是这种方式. 指的是当一个表或索引有统计信息, 则走 CBO 的方式, 如果表或索引没统计信息, 表又不是特别的小, 而且相应的列有索引时, 那么就走索引, 走 RBO 的方式.
First Rows: 它与 Choose 方式是类似的, 所不同的是当一个表有统计信息时, 它将是以最快的方式返回查询的最先的几行, 从总体上减少了响应时间.
All Rows: 也就是我们所说的 Cost 的方式, 当一个表有统计信息时, 它将以最快的方式返回表的所有的行, 从总体上提高查询的吞吐量. 没有统计信息则走 RBO 的方式.
设定选用哪种优化模式:
A、Instance 级别我们可以通过在 initSID.ora 文件中设定 OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS
如果没设定 OPTIMIZER_MODE 参数则默认用的是 Choose 方式.
B、Sessions 级别通过 ALTER SESSION SET OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS 来设定.
C、语句级别用 Hint(/*+ ... */) 来设定
为什么表的某个字段明明有索引, 但执行计划却不走索引?
1、优化模式是 all_rows 的方式
2、表作过 analyze, 有统计信息
3、表很小, 上文提到过的, Oracle 的优化器认为不值得走索引
分享到:
相关推荐
Oracle优化器有两种主要的工作模式:基于规则的优化(RBO)和基于代价的优化(CBO)。RBO遵循预定义的规则来决定执行计划,例如,当WHERE子句中的列有索引时,它倾向于使用索引。而CBO则更加灵活,它会根据表和索引...
《基于成本的Oracle优化法则》是数据库专家Jonathan Lewis的一部经典著作,该书深入探讨了Oracle数据库的性能优化策略,特别是在成本基础优化方面。Oracle数据库是全球广泛使用的大型企业级数据库系统,其性能优化...
Oracle 优化器介绍 Oracle 优化器是 Oracle 数据库中的一种核心组件,负责生成执行计划,以提高 SQL 语句的执行效率。 Oracle 优化器可以分为两大类:基于规则的优化器(RBO)和基于成本的优化器(CBO)。 基于...
"基于成本的Oracle优化法则"是一个重要的概念,它涉及到Oracle数据库查询优化器的工作原理。在这个主题中,我们将深入探讨这一法则,理解其背后的机制,并学习如何利用这些知识来提升数据库性能。 1. **基于成本的...
Oracle 优化常用概念 Oracle 优化器是 Oracle 数据库管理系统中一个核心组件,负责根据用户提交的 SQL 语句生成最优的执行计划,以提高查询效率。以下是 Oracle 优化器中的一些常用概念: CBO/RBO Oracle 优化...
Oracle优化设计方案旨在提升数据库性能,确保数据安全,便于管理和开发。设计Oracle数据库时,需要遵循一系列基本原则和步骤。 首先,逻辑建模是根据系统需求分析数据间的内在和外在关系,构建整个系统的数据结构。...
### Oracle优化重量级知识点解析 #### 一、Oracle优化的重要性 在数据库管理领域,Oracle数据库因其卓越的性能、稳定性和安全性而被广泛采用。然而,随着业务量的增长和技术的发展,即使是像Oracle这样的顶级...
优化笔记 sql性能的调整-总结 SQL代码性能优化 Oracle语句优化53个规则详解 ORACLE9i优化设计与系统调整 oracle9i优化器介绍 oracle9i的查询优化 ……
### Oracle优化教程知识点详解 #### 一、选用适合的Oracle优化器 在Oracle数据库中,优化器的选择对于SQL语句的执行效率至关重要。Oracle提供了三种优化器类型:基于规则(RULE)、基于成本(COST)和选择性...
ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...
该培训资料中包括5大内容块: 1>Oracle分区技术及大数据量操作性能优化 2>Oracle性能问题一般解决思路 3>Oracle常用hint 4>Oracle动态图 5>Oracle执行计划和SQL调优
### Oracle优化方法与实践 #### 一、优化器模式选择 在进行Oracle数据库优化时,首先需要关注的是优化器模式的选择。Oracle提供了多种优化器模式,包括基于规则的优化器(RULE)、基于成本的优化器(COST)以及...
Oracle优化PPT教程通常会涵盖一系列关键概念和技术,旨在提高数据库的运行效率,减少资源消耗,提升用户体验。以下是对这个教程可能涉及的知识点的详细解释: 1. **SQL优化**:这是Oracle数据库优化的核心,涉及到...
Oracle数据库性能优化是确保系统高效运行的关键环节,尤其是在大数据量和高并发的环境中。Oracle数据库因其先进、完整和集成的特性,在市场中占据主导地位,因此深入理解和掌握Oracle的优化技术至关重要。 首先,...
Oracle SQL 优化 Oracle SQL 优化是数据库性能优化的关键部分。为了提高数据库的性能,我们需要从五个方面进行调整:去掉不必要的大型表的全表扫描、缓存小型表的全表扫描、检验优化索引的使用、检验优化的连接技术...
1. **索引优化**:索引是提升查询性能的关键工具。金牌DBA会根据查询模式和数据分布情况创建和维护索引,如B树索引、位图索引、函数索引等,同时避免过度索引导致的写操作性能下降。 2. **SQL优化**:通过分析SQL...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
Oracle优化是数据库管理中的关键环节,它涉及到性能提升、资源有效利用和系统稳定性等多个方面。在给定的压缩包文件中,我们找到了四个与Oracle优化密切相关的文档:ArcSDE for Oracle优化配置和调整初步、oracle...