Oracle数据库SQL执行计划与优化

在执行SQL语句之前,Oracle会先分析其执行计划,然后根据计划进行执行。这项分析工作由优化器(Optimizer)完成。Oracle优化器有两种优化方式:

  • 基于规则的优化(RBO):遵循Oracle内部预设规则,例如,当where子句中的列有索引时,会优先使用索引。
  • 基于代价的优化(CBO):根据语句的执行代价(主要指CPU和内存)选择执行计划。优化器会参考表和索引的统计信息进行判断。然而,过期的统计信息可能会导致优化器选择错误的执行计划。

自Oracle8以后,官方推荐使用CBO方式进行优化。Oracle10g版本开始,RBO方式已不再被支持。