1) 优化器(optimizer)
a) RBO(rule-based optimizer)方式:基于规划的优化方式
所遵循的是oracle内部预定的一些规则.
b) CBO(cost-based optimizer)方式:看语句的执行代价(cost),这里的代价主要指cpu和内存。
优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。
2) 优化模式
a) rule:基于规则的方式
b) choose:默认使用方式,有统计信息,采用CBO,无统计信息,采用RBO.
c) first rows:有统计信息,以最快的时间返回最先几行,通常为NL连接方式。
d) all rows:即cost方式,有统计信息,以最快的方式返回表的所有行,无统计信息,才用RBO;
e) 更新统计信息
表: analyze table table_name compute statistics
索引:analyze index index_name estimate statistics
f) 有时候明明有索引但是执行计划没有走索引,原因有二,第一:表或索引的统计信息缺失或过时;第二:表太小,oracle认为不值得走索引。
3) 执行计划管理
优化器会维护所有执行次数超过一次的sql语句的每个执行计划的历史列