>  기사  >  데이터 베이스  >  Oracle OPTIMIZER_MODE参数

Oracle OPTIMIZER_MODE参数

WBOY
WBOY원래의
2016-06-07 17:07:211036검색

Oracle 在执行SQL语句时,有两种优化方法:即基于规则的RBO和基于代价的CBO。 在SQL执教的时候,到底采用何种优化方法,就由Orac

Oracle 在执行SQL语句时,有两种优化方法:即基于规则的RBO和基于代价的CBO。 在SQL执教的时候,到底采用何种优化方法,就由Oracle参数 optimizer_mode 来决定。

Rule Based Optimizer(RBO)基于规则
Cost Based Optimizer(CBO)基于成本,或者讲统计信息


SQL> show parameter optimizer_mode;


NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_mode     stringALL_ROWS


oracle10g开始默认是all_rows


ALL_ROWS不管是不是有统计信息,全部采用基于成本的优化方法,返回最大数的量数据

FIRST_ROWS_n不管是不是有统计信息,,全部采用基于成本的优化方法并以最快的速度,返回前N行记录

FIRST_ROWS使用成本和试探法相结合的方法,查找一种可以最快返回前面少数行的方法

第一个是返回所有行的最小代价,第二个是返回前N行的最小代价,最后一个是返回前面的少量行的最好计划

修改全局
alter system set optimizer_mode=all_rows;

修改当前session

alter session set optimizer_mode=all_rows;

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.