Oracle里的优化器
Oracle市场占有率近50%,是使用范围最广的关系型数据库(RDBMS)
对于关系型数据库的应用系统而言,SQL语句的好坏会直接影响系统的性能,很多系统性能很差最后发现都是因为SQL些的很烂的缘故。
对所有的关系型数据库而言,优化器无疑时其中最核心的部分,因为优化器负责解析SQL,而我们又都是通过SQL来访问存储在关系型数据库中的数据的。所以优化器的好坏会直接决定该关系型数据库的强弱。
优化器负责解析SQL,所以想要做好SQL优化,就必须了解优化器。
什么是优化器
optimizer是Oracle数据库中内置的一个核心子系统。优化器的目的时按照一定的判断原则来得到它认为的目标SQL在当前情形下最高效的执行路径(Access Path),也就是说,优化器的目的就是为了得到目标SQL的执行计划。
优化器的分类
Oracle数据库里的优化器又分为RBO和CBO这两种类型
- RBO : Rule-Based Optimizer,基于规则的优化器
- CBO : Cost-Based Optimizer,基于成本的优化器
RBO :所用的判断原则为一组内置的规则,这些规则硬编码在Oracle数据库的代码中,RBO会根据这些规则从诸多可能的执行路径中选择一条来座位其执行计划
CBO : 所用的判断原则为成本,CBO会从目标SQL诸多可能的执行路径中选择成本值最小的一条来