oracle查询转换_view merge
时间:2022-03-10 16:55
oracle对于子查询的支持做的很好,oracle optimizer会对inline view进行query
transfomation,即视图合并,不过也经常带来意想不到的问题。
下面是一个inline view的merge的例子:
1, 创建临时表
1 create table test1 as select * from dba_objects; 2 create table test2 as select * from dba_objects;
2, 以下查询语句
可以很明显的看出,时间花费在什么地方了。在进行hash group
by和filter的过程中花费了大量的时间。
因为test1和test2进行hash join的中间结果有147,500,423条。
总结:
无论是inline view的merge还是其它的可选执行计划,最优的那个访问路径一定是具备了以下的条件:
- 优先对查询应用过滤性条件,尽可能多的减少中间结果集。
- 尽可能的只扫描期望得到的那一部分数据,减少不必要的开销。
oracle查询转换_view merge,gxlsystem