索引扫描方式补充两个:
index full scan、index fast full scan,在很多场合下都可以被用来优化SQL,尤其是前者,与前面说的first_rows这个东东有时候可能有关系:
first_rows是个提示,也是一种优化器的行为比较高层次的指导方式(参数optimize_mode来指定),另外一种是all_rows——这个是现在CBO优化器的默认方式,意味着Oracle会考虑在返回所有数据的情况下来选择SQL的执行计划,通常这也是更合理的取值,first_rows意味着指示CBO更快返回几行数据,通常见于分页,这就不得不提到前面说过的INDEX FULL SCAN这种索引扫描方式,在被优化的带有order by的分页SQL中,你会发现大量基于order by字段的INDEX FULL SCAN,当然在分页中,这个“索引全扫描”并不没有完全完成,因为分页不需要返回所有数据。
另外,慎用first_rows,因为它对CBO的影响太大,很可能给你生成不合理的执行计划。