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