oracle OPTIMIZER_MODE参数

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 string ALL_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;

你可能感兴趣的:(oracle)