一、物化视图介绍
物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。
我们在以前的系统中对复杂的数据进行统计查询时,一般都是写复杂的sql语句或是建立视图,然后进行统计查询,如果引进物化视图来实现这些查询,会大大提升查询的性能。
二、物化视图特点
1、数据重组;
将需要查询的数据单独存储到物化视图表中,在进行复杂的业务查询时可以直接从该表中获取数据,避免表连接带来的性能损耗,提升查询性能。
2、刷新机制
Complete:完全刷新
Fast:快速刷新,即增量刷新
Force:先进行快速刷新,如果不满足快速刷新条件,再进行完全刷新。
3、刷新时机:
On commit:基表提交即刷新;
On demand:根据用户需要进行刷新
Start with..next..:设定刷新周期自动刷新。
4、查询重写
在已经建好的系统中也可以使用物化视图功能,我们可以针对查询语句建立物化视图,不必修改业务程序,系统在执行查询时,oracle后台自动进行查询路径分析,使用成本消耗更少的物化视图进行查询,提升性能。
三、物化视图的限制
快速刷新限制条件:
1.物化视图不能包含对不重复表达式的引用,如SYSDATE和ROWNUM;
2、在select子句中不能出现子查询;
3.不能包含对LONG和LONG RAW数据类型的引用。
4.不能包括GROUP BY语句或聚集操作;
5.如果在WHERE语句中包含外连接,那么唯一约束必须存在于连接中内表的连接列上;
6.如果不包含外连接,那么WHERE语句没有限制,如果包含外连接,那么WHERE语句中只能使用AND连接,并且只能使用“=”操作。
7、需要在基表上创建物化视图日志;
四、物化视图创建语法
物化视图创建语法:
create materialized view [view_name]
refresh [fast|complete|force]
[on [commit|demand] |
start with (start_time) next (next_time)
]
as
{创建物化视图用的查询语句}
物化视图日志创建语法:
Create materialized view log on 基表 with rowid/primary key[,sequence(col1,…,coln) including new values]
五、手动刷新
1. 可以使用dbms_mview.refresh(‘物化视图’,‘c/f’);
2. 可以创建刷新组定时刷新;
3. 可以使用job进行定时刷新;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7204674/viewspace-621178/ ,如需转载,请注明出处,否则将追究法律责任。