Oracle创建物化视图
通过Oracle物化视图章节,我们已经了解到Oracle物化视图的作用和创建原理,本节通过实例详细讲解Oracle是如何创建物化视图的。
创建物化视图语法:
语法:creatematerializedviewview_name
refresh[fast|complete|force]
[
on[commit|demand]|
startwith(start_time)next(next_time)
]
ASselect查询语句;
语法解析:
1、create materialized view是创建物化视图的命令关键字。view_name指的是要创建物化视图的名字。
2、refresh 是指定物化视图数据刷新的模式:
force:这个是默认的刷新方式,Oracle会自动判断该如何进行数据刷新,如果满足快速刷新的条件,就进行fast刷新,不满足就进行全量刷新。
complete:这个是全量刷新数据,当要刷新数据时,会删除物化表中的所有数据,然后物化视图中的查询语句重新生成数据。
fast:采用增量的方式进行数据的刷新。通过主表的视图日志和上次刷新数据进行比对,然后增量更新物化后的数据表。
3、on[comit|demand],指的是选择物化视图数据刷新的模式。
on commit指的是基表的数据有提交的时候触发刷新物化视图,使得物化视图中的数据和基本的数据是一致性的。
on demand指定是物化视图数据刷新的另外一种方式,仅在需要更新数据时才刷新物化视图中的数据。一般配合 start with 参数按照特定的时间计划,按计划更新数据,比如每天晚上12点或每周更新一次物化视图中的数据。
实例
我们给一个子查询创建一下物化视图提高它的查询效率,子查询如下:
创建物化视图,创建脚本如下:--创建物化视图需要权限
grantcreatematerializedviewtostudent;
creatematerializedviewstudent.mv_stuinfo
refreshforce
ondemand
startwithsysdatenextto_date(concat(to_char(sysdate+1,'dd-mm-yyyy'),'01:00:00'),'dd-mm-yyyyhh24:mi:ss')
as
selectt1.stuid,t1.stuname,t1.sex,t1.age,t2.classno,t2.classname
fromstudent.stuinfot1,student.classt2
wheret1.classno=t2.classno;
创建好后,直接查询物化视图,可以发现已经有数据了,这时你可以随意在物化视图上加索引,进一步提高查询效率。