oracle的优化是oracle数据库最核心的部分,它负责解析SQL语句。要想做好sql优化就必须了解优化器。为了让大家对Oracle数据库的优化器有个全局的了解和认识。我们今天简历的聊聊oracle的优化器。
oracle优化器分RBO(基于规则的优化器)和CBO(基于成本的优化器)两种类型。
优化器的目的是为了获取SQL的最优执行计划。
RBO(基于规则的优化器):oracle内置的一套规则。这个套规则是oracle硬编码在oracle数据库的代码中的。当SQL语句发给oracle服务器,oracle优化器从SQL语句很多执行路径中选择一条执行计划。
1.基于规则的优化器大致分为15个等级。等级1所对应的执行路径的执行效率最高。等级15所对应的执行路径的执行效率最低。
2.等级1所对应的执行路径就是通过ROWID来访问单行数据。
3.等级15所对用的执行路径是全表扫描。
4.在RBO的情况下,执行计划一旦出了问题,很难调整。
5.SQL语句中涉及的表在SQL语句中的先后顺序有可能影响RBO的执行计划。
6.可以通过等价改写SQL语句来调整RBO的执行计划。
CBO(基于成本的优化器):它是基于成本的。这些成本的判断信息来至于SQL语句涉及的表,索引,列等相关对象的统计信息计算出来的。从SQL 语句的执行路径中选择成本最小的条做为执行计划。
1.基于CBO 的优化器受对象 的实际数量,数据分布等情况的影响。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12798004/viewspace-1462004/
,如需转载,请注明出处,否则将追究法律责任。