oracle表的统计信息完全正确,执行计划无故改变。原厂人员如是回复

Posted ORACLE-fans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle表的统计信息完全正确,执行计划无故改变。原厂人员如是回复相关的知识,希望对你有一定的参考价值。

就像在电话里提到的那样,Oracle
内部的优化器是根据一系列的内部
算法基于表上的统计信息来产生执
行计划的。对于特别复杂的SQL语
句,Oracle的优化器有一定几率不
能得到最优的执行计划(因为机器
代码实际上是比较死板的,虽然得
到的执行计划按照内部的算法来看
是比较快的,但是实际上这个执行
计划可能在实际执行中比较慢)。
我们现在碰到的就是这种情况,虽
然表的统计信息是准的,但恰恰优
化器在基于这个统计信息使用内部
算法得到的执行计划是不优化的一
这是优化器的固有限制。这时候就
需要DBA/Oracle Support介入,或
者使用hint,或者使用SQL Profile来
固定更好的执行计划。(这就是
Oracle数据库存在SQL Profile/hint
技术的原因,并且需要DBA操作人
员的原因)





















以上是关于oracle表的统计信息完全正确,执行计划无故改变。原厂人员如是回复的主要内容,如果未能解决你的问题,请参考以下文章

SQL性能优化(Oracle)

Oracle里收集与查看统计信息的方法

SQL执行异常系列之——统计信息不准

Oracle - SPM固定执行计划

oracle数据库优化之统计信息

Oracle固定SQL的执行计划---SQL Profile