Oracle物化视图介绍
Oracle 物化视图说明
1 详细语法
CREATE MATERIALIZED VIEW [mv_name] [
TABLESPACE [ts_name] -- 指定表空间
PARALLEL (DEGREE 2) -- 并行度设计为2(与目前的CPU个数相等) BUILD [IMMEDIATE|DEFERRED] -- 创建是否产生数据 REFRESH [FAST|COMPLETE|FORCE] -- 快速、完全刷新
[ON COMMIT|ON DEMAND START WITH (start_time) NEXT (next_time)] -- 刷新方式 ENABLE QUERY REWRITE -- 查询重写 ] AS
{创建物化视图用的查询语句};
2 语法解释
以上是Oracle创建物化视图(Materialized View,以下简称MV)时的常用语法,各参数的含义如下:
1、创建方式(Build Methods)
包括BUILD IMMEDIATE和BUILD DEFERRED两种。BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。默认为BUILD IMMEDIATE。
2、刷新(Refresh):
指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。刷新的模式有两种:ON DEMAND和ON COMMIT。ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新。ON COMMIT指出物化视图在对基表的DML操作提交的同时进行刷新。刷新的方法有四种:FAST、COMPLETE、FORCE和NEVE*。**ST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新。默认值是FORCE ON DEMAND。
refresh [fast|complete|force] 视图刷新的方式:
fast: 增量刷新.假设前一次刷新的时间为t1,那么使用fast模式刷新物化视图时,只向视图中添加t1到当前时间段内,主表变化过的数据.为了记录这种变化,建立增量刷新物化视图
还需要一个物化视图日志表。create materialized view log on (主表名)。
complete: 全部刷新。相当于重新执行一次创建视图的查询语句。
force: 这是默认的数据刷新方式。当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式。
MV数据刷新的时间:
on demand: 在用户需要刷新的时候刷新,这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新)
on commit: 当主表中有数据提交的时候,立即刷新MV中的数据;
start ??: 从指定的时间开始,每隔一段时间(由next指定)就刷新一次; Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。
3、查询重写(Query Rewrite):
包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。默认为DISABLE QUERY REWRITE。
3 物化视图日志
物化视图日志:如果需要进行快速刷新,则需要建立物化视图日志。物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
1、详细语法
CREATE MATERIALIZED VIEW LOG ON [t_name] -- 表名 tablespace [ts_name] -- 日志保存在特定的表空间
WITH [ROWID|PRIMARY KEY|SEQUENCE]; -- 日志类型
4 物化视图类型
物化视图可以分为以下三种类型:只包含连接的物化视图;包含聚集的物化视图;嵌套物化视图。三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。
5 各类型快速刷新的限制
所有类型的快速刷新物化视图都必须满足的条件:
1.物化视图不能包含对不重复表达式的引用,如SYSDATE和ROWNUM; 2.物化视图不能包含对LONG和LONG RAW数据类型的引用。
5.1 只包含连接的物化视图
1.必须满足所有快速刷新物化视图都满足的条件; 2.不能包括GROUP BY语句或聚集操作;
3.如果在WHERE语句中包含外连接,那么唯一约束必须存在于连接中内表的连接列上;
4.如果不包含外连接,那么WHERE语句没有限制,如果包含外连接,那么WHERE语句中只能使用AND连接,并且只能使用“=”操作。
5.FROM语句列表中所有表的ROWID必须出现在SELECT语句的列表中。 6.FROM语句列表中的所有表必须建立基于ROWID类型的物化视图日志。
下面,我们看一个满足快速刷新条件的例子,然后依次违反上述6个条件,分别测试,查看会出现什么错误。
首先,创建测试环境:
SQL> create table dim_a (id number primary key, name varchar2(30)); 表已创建。
SQL> create table dim_b (id number primary key, name varchar2(30)); 表已创建。
SQL> create table fact (id number, aid number, bid number, num number); 表已创建。
SQL> alter table fact add constraint fk_fact_aid foreign key (aid) references dim_a(id); 表已更改。
SQL> alter table fact add constraint fk_fact_bid foreign key (bid) references dim_b(id); 表已更改。
SQL> insert into dim_a select rownum, 'a'||rownum from user_objects; 已创建74行。
SQL> insert into dim_b select rownum, 'b'||rownum from user_objects; 已创建74行。
SQL> insert into fact select rownum, mod(rownum, 6) + 1, mod(rownum, 5 ) + 1, rownum *2
2 from user_objects; 已创建74行。 SQL> commit; 提交完成。
接下来建立一个可以成功快速刷新的例子,这个物化视图只包含连接: SQL> create materialized view log on dim_a with rowid; 实体化视图日志已创建。
SQL> create materialized view log on dim_b with rowid; 实体化视图日志已创建。
SQL> create materialized view log on fact with rowid; 实体化视图日志已创建。
SQL> create materialized view mv_fact refresh fast on commit as 2 select f.rowid f_rowid, a.rowid a_rowid, b.rowid b_rowid, f.id, 3 a.name a_name, b.name b_name, num 4 from fact f, dim_a a, dim_b b 5 where f.aid = a.id 6 and f.bid = b.id; 实体化视图已创建。
下面我们依次违反上面的6个条件,观察错误信息。 1.包含SYSDATE/ROWNUM或RAW/LONG RAW数据类型。
SQL> create materialized view mv_fact_err refresh fast on commit as 2 select f.rowid f_rowid, a.rowid a_rowid, b.rowid b_rowid, f.id, 3 a.name a_name, b.name b_name, num, sysdate time 4 fr …… 此处隐藏:4408字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




