本文主要是介绍在使用RBO的情况下,出现两条或两条以上的执行路径的等级值相同的情况下,如何调整执行计划?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果在目标SQL中使用了hint,就意味着自动启用了CBO(仅有两个例外),那如何在使用RBO的情况下对执行计划做调整呢?
1、等价改写目标SQL
比如在SQL的where条件中对number或date类型的列加上0,在varchar2或char上加上空字符串,例如||'',这样就可以让原本可以走的索引走不了。
2、通过调整索引在数据字典缓存中的缓存顺序来改变执行计划
会优先使用后创建(创建时间)的索引。
3、通过改变目标SQL中说涉及的各个对象在该SQL文本中出现的顺序(适用于SQL中出现了多表连接的情形)
RBO会安装从右往左的顺序来决定谁是驱动表,谁是被驱动表,进而会据此来选择执行计划(右边的为驱动表,左边的为被驱动表)。
这篇关于在使用RBO的情况下,出现两条或两条以上的执行路径的等级值相同的情况下,如何调整执行计划?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!