Oracle中CBO优化器简介

Oracle中CBO优化器简介

      Oracle数据库中的优化器是SQL分析和执行的优化工具。它负责制定SQL的执行计划,也就是它负责保证SQL的执行计划的效率最高,比如优化器决定Oracle以什么样的方式访问数据,优化器是SQL执行的核心,它作出的执行计划的好坏,直接影响着SQL的执行效率。

1、执行计划中数据的访问方式:

直接表(无索引)的访问:并行

多数据块

通过索引访问:index unique scan(=唯一值)

Index range scan(<,>范围)

Index full scan(order by, <>)

2、执行计划中数据的关联处理:

Nested loop join:嵌套循环

Merge join:先将表排序

Hash join:hash定位

CBO优化器有两者可以选择的运行模式:

First_rows(n)

All_rows

3、First_rows(n)模式

当设置为first_rows(n)模式时,Oracle在执行SQL时,会优选考虑将结果集的前N条记录以最快的速度反馈回来,而其他的结果并不需要同时返回。这种设置常用于一些电子商务网站或者BBS论坛的分页处理。

 

需要注意的是order 不要的字段必须创建索引。否则Oracle会忽略first_rows而选择使用all_rows

4、All_rows模式

当设置为all_rows()模式时,Oracle会以最快的速度将全部的SQL执行完毕,并将所有的结果集反馈回来。All_rows模式在OLAP系统中用的比较多,all_rows强调SQL整体的执行效率,而first_rows(n)强调以最快的速度返回前n行,而不管所有结果返回的时长,可能最后一条记录要很长时间之后才能获得。

原文地址:https://www.cnblogs.com/suncoolcat/p/3398159.html