oracle数据库优化-视图合并测试

时间:2024-05-22 20:59:51

       视图合并是指优化器不在将view部分当做一个独立的处理单元来单独执行,而是会将其拆开,把其定义sql语句中的基表拿出来与外部查询中的表进行合并。(相反存在/*+materized*/)。

       oracle数据库中视图合并分为3种类型,简单视图合并,外连接视图合并,复杂视图合并。

简单视图:不包含外连接,视图定义不包含distinct、group by 、聚合函数等的视图。

简单视图合并条件:该视图sql中不包含集合运算符(UNION\UNION ALL\ INTERSECT\MINUS),CONNECT BY 语句、rownum等。


SQL> create view view1 as select object_id,object_name from t1;

View created.

SQL> create view view2 as select object_id,object_name from t1 where rownum<1000;
SQL> select * from t2,view1 t where t.object_name=t2.table_name;

oracle数据库优化-视图合并测试

SQL>  select * from t2,view2 t where t.object_name=t2.table_name;

oracle数据库优化-视图合并测试

 

外连接视图合并

外连接视图合并是指使用了外连接。以及定义sql不包含distinct、group by等聚合函数的sql视图合并。

合并条件:外连接视图作为驱动表,或者被驱动表时视图定义的基表只能包含一个表。