Oracle优化器有两大类,基于规则的和基于代价的。基于规则的查询,数据库根据表和索引等定义信息,按照一定的规则来产生执行计划;基于代价的 查询,数据库根据搜集的表和索引的数据的统计信息综合来决定选取一个数据库认为最优的执行计划。基于规则的模式下,数据库的执行计划通常比较稳定。但在基于代价的模式下,我们才有更大的机会选择最优的执行计划。既然是基于代价的模式,也就是说执行计划的选择是根据表、索引等定义和数据的统计信息来决定的,这个统计信息是根据analyze命令或者dbms_stats包来定期搜集的。