在使用RBO的情况下,出现两条或两条以上的执行路径的等级值相同的情况下,如何调整执行计划?

来源:互联网 发布:淘宝二维码用微信打开 编辑:程序博客网 时间:2024/06/05 01:55

如果在目标SQL中使用了hint,就意味着自动启用了CBO(仅有两个例外),那如何在使用RBO的情况下对执行计划做调整呢?

1、等价改写目标SQL

比如在SQL的where条件中对number或date类型的列加上0,在varchar2或char上加上空字符串,例如||'',这样就可以让原本可以走的索引走不了。

2、通过调整索引在数据字典缓存中的缓存顺序来改变执行计划

会优先使用后创建(创建时间)的索引。

3、通过改变目标SQL中说涉及的各个对象在该SQL文本中出现的顺序(适用于SQL中出现了多表连接的情形)

RBO会安装从右往左的顺序来决定谁是驱动表,谁是被驱动表,进而会据此来选择执行计划(右边的为驱动表,左边的为被驱动表)。



阅读全文
1 0
原创粉丝点击