优化器Optimizer 是SQL分析和执行的优化工具,负责制订SQL执行计划,保证SQL执行的效率最高。
优化器决定ORACLE以什么样的方式访问数据,是全表扫描,索引范围扫描(Index Range Scan) 还是 全索引快速扫描(Index Fast Full Scan ,Index_ffs);对于表关联查询,负责确定表之间以一种什么方式来关联,比如HASH_JOIN还是NESTED LOOPS或是MERGE JOIN。直接决定SQL的执行效率,优化器是SQL执行的核心。
Oracle 优化器有两种,基于规则的优化器(RBO)和 基于代价的优化器CBO。
RBO已经被启用,不过可以通过HINT方式来使用。
CBO是比RBO更理性的优化器。
CBO优化器有两种可选的运行模式。
- FIRST_ROWS(n)
- ALL_ROWS
ALL_ROWS在OLAP系统中使用的比较多,目的在于用最快的速度获得SQL执行的最后一条记录,而不是前n条数据。
FIRST_ROWS(n)正好相反,ALL_ROWS强调SQL整体的执行效率,而FISRT_ROWS(n)强调以最快的速度返回前n行,而不管所有的结果返回时长,可能最后一条要很长时间之后才能获得。
本文介绍了Oracle数据库中的两种优化器:基于规则的优化器(RBO)和基于代价的优化器(CBO)。CBO是一种更为先进的优化器,它有两种运行模式:FIRST_ROWS(n)和ALL_ROWS,分别适用于不同的场景。

155

被折叠的 条评论
为什么被折叠?



