物化视图概述:

Oracle的物化视图提供了强大的功能,可以用在不同的环境中。在不同的环境中,物化视图的作用也不相同。数据仓库中的物化视图主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的物化视图进行查询,完全对应用透明。物化视图和表一样可以直接进行查询。物化视图可以基于分区表,物化视图本身也可以分区。除了在数据仓库中使用,物化视图还用于复制、移动计算等方面。物化视图在很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。

物化视图语法:

create materialized view materialized_view_name

build

[immediate|deferred] --1.创建方式

refresh

[complete|fast|force|never] --2.物化视图刷新方式

on

[commit|demand] --3.刷新触发方式

start with

(start_date) --4.开始时间

next

(interval_date) --5.间隔时间

with [primary key|rowid] --默认

primary key

ENABLE QUERY

REWRITE --7.是否启用查询重写

as --8.关键字

select

statement; --9.基表选取数据的select语句

1.创建方式默认是immediate,立即;deferred,延迟,至第一次refresh时,才生效。

2.物化视图刷新方式默认为force,意思是:如果可以快速刷新,就执行快速刷新;否则,执行完全刷新。

complete,完全刷新,即,刷新时更新全部数据,包括视图中已经生成的原有数据。

fast,快速刷新,只刷新增量部分。前提是,需要在基表上创建物化视图日志(见示例)。该日志记录基表数据变化情况,所以才能实现增量刷新。

never,从不刷新。

3.on commit,基表有commit动作时,刷新视图,不能跨库执行(因为不知道别的库的提交动作);on

demand,在需要时刷新,即,根据后面设定的起始时间和时间间隔进行刷新,或者,手动调用dbms_mview包中的过程刷新时再执行刷新。

4和5.即开始刷新时间和下次刷新的时间间隔。如:start with sysdate next

sysdate+1/1440表示马上开始,刷新间隔为1分钟。(与 on commit选项冲突)

6.基于基表的主键或者rowid创建。如果是基于rowid,不能对基表执行分组函数、多表连结等需要把多个rowid合成一行的操作(理由很简单:到底以哪个rowid为准呢?)。

7.如果设置了初始化参数query_rewrite_enabled=true则默认就会启用查询重写。但是,数据库默认该参数为false。并且,不是什么时候都应该启用查询重写。所以,该参数应该设置为false,而在创建特定物化视图时,根据需要开启该功能。另外,如果选择使用了上面第4‘5选项,则不支持查询重写功能(原因很简单,所谓重写,就是将对基表的查询定位到了物化视图上,而4、5选项会造成物化视图上部分数据延迟,所以,不能重写)。

创建物化试图主要选项说明

创建物化视图时可以指定多种选项,下面对几种主要的选项进行简单说明:

名称

Build

Clause

创建方式

描述

包括BUILD

IMMEDIATE和BUILD

DEFERRED两种

取值

BUILD IMMEDIATE

在创建物化视图的时候就生成数据

BUILD

DEFERRED

在创建时不生成数据,以后根据需要在生成数据

默认

BUILD

IMMEDIATE

名称

Refresh

刷新子句

描述

当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步

语法

[refresh [fast | complete | force]

[on demand | commit]

[start with date]

[next date]

[with {primary key | rowid}]

]

简介

FAST

采用增量刷新,只刷新自上次刷新以后进行的修改;对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。

COMPLETE

对整个物化视图进行完全的刷新即完全刷新重新生成整个视图

FORCE(默认)

Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用Fast方式,否则采用Complete的方式,Force选项是默认选项

ON DEMAND(默认)

物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新

ON COMMIT

物化视图在对基表的DML操作提交的同时进行刷新

START WITH

通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点,因此它是和next成组出现

NEXT

刷新时间间隔

WITH PRIMARY KEY(默认)

生成主键物化视图,也就是说物化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。

为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的物化视图。主键物化视图允许识别物化视图表而不影响物化视图增量刷新的可用性

WITH ROWID

只有一个单一的主表,不能包括下面任何一项:

●Distinct

●聚合函数●Group by

●子查询●连接●SET操作

名称

Query Rewrite

查询重写

描述

包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据

简介

ENABLE QUERY REWRITE

支持查询重写

DISABLE QUERY REWRITE

不支持查询重写

默认

DISABLE QUERY REWRITE

创建实体化视图日志主要选项说明 :

如果需要进行快速(FAST)刷新,则需要建立物化视图日志。物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。

名称

WITH Clause

描述

取值

OBJECT ID

如果是对象物化视图(object materialized view),则只能采用该方式

PRIMARY KEY

ROWID

SEQUENCE

默认

实体举例 :

创建增量刷新的物化视图时应先创建存储的日志空间:

create materialized view log on

hs_his.hisfuassettot

tablespace HS_HIS_IDX with rowid;

--在hs_his.hisfuassettot表上创建物化视图日志

然后创建物化视图:

方法一:

create materialized view hs_his.hisfuassettot_mv

tablespace

HS_HIS_IDX --指定表空间

build

immediate --创建视图时即生成数据

refresh

fast --基于增量刷新

on

commit --数据DML操作提交就刷新

with

rowid --基于ROWID刷新

as select * from hs_his.hisfuassettot

方法二:

create materialized view hs_his.hisfuassettot_mv

tablespace

HS_HIS_IDX --指定表空间

refresh

fast --基于增量刷新

start with

sysdate --创建视图时即生成数据

next

sysdate+2 --以后每隔两天刷新一次

with

rowid --基于ROWID刷新

as select * from hs_his.hisfuassettot

删除物化视图日志:

drop materialized view log on hs_his.hisfuassettot;

删除物化视图:

drop materialized view hs_his.hisfuassettot_mv;

oracle雾化试图_Oracle物化视图语法相关推荐

  1. oracle雾化试图_Oracle 物化视图 说明

    一.    物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...

  2. oracle雾化试图_ORACLE物化视图具体解释

    一.物化的一般使用方法物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,不论什么对视图的查询,oracle ...

  3. oracle雾化试图_Oracle创建物化视图

    Oracle创建物化视图 通过Oracle物化视图章节,我们已经了解到Oracle物化视图的作用和创建原理,本节通过实例详细讲解Oracle是如何创建物化视图的. 创建物化视图语法: 语法:creat ...

  4. Oracle 11g 通过创建物化视图实现不同数据库间的表数据同步

    Oracle 11g 物化视图语法如下: create materialized view [view_name] refresh [fast|complete|force] [ on [commit ...

  5. Oracle 如何根据物化视图日志快速刷新物化视图 (不积跬步,无以至千里)

    Oracle物化视图的快速刷新机制是通过物化视图日志完成的.Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢,本文简单的描述一下刷新的原理. 首先,看一下物化视图的结构: SQL ...

  6. 傅老师课堂:Oracle高级应用之物化视图(materialized view)

    原文地址:http://hi.baidu.com/gukeming888/blog/item/2682f69481c8237154fb9662.html 物化视图 (Materialized View ...

  7. oracle including new values,物化视图日志加不加INCLUDING NEW VALUES有什么影响

    满意答案 ap.jil 2016.06.30 采纳率:58%    等级:9 已帮助:213人 NEW VALUES Clause The NEW VALUES clause lets you det ...

  8. oracle 物化视图、中间表的方案

    物化视图 有个项目因为有比较多的查询汇总,考虑到速度,所以使用了物化视图.简单的把用到的给整理了下.先看简单创建语句: create materialized view mv_materialized ...

  9. oracle视图查询机制,物化视图及日志内部机制的一点研究

    Oracle物化视图的快速刷新机制是通过物化视图日志完成的.Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢,本文简单的描述一下刷新的原理. 首先,看一下物化视图的结构: SQL ...

最新文章

  1. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | LoadedApk 后续分析 )
  2. SDUT_2119 数据结构实验之链表四:有序链表的归并
  3. Java引入import其它目录的自定义包或java源文件
  4. python实例[判断操作系统类型]
  5. 数据库连接,实现增删改查操作具体步骤(全)
  6. 【机器学习】标准化和归一化辨析
  7. select回显异常
  8. Python:罗马数字转整数
  9. pvid与access的关系_浅谈PVID和VID区别
  10. 输入1-365 的一个数字判断它是几月几日
  11. Si512 支持 NFC 协议超低功耗检卡能非接触式读卡芯片
  12. list object has no attribute ZScan_【恋爱体验】No.112丨大二男生,河南南阳,身高178,喜欢篮球、羽毛球、兵乓球、足球.........
  13. [虚拟机][linux]虚拟机VMware桥接模式无法上网问题
  14. 绘画系统——P5.js
  15. 【Axure交互教程】图表载入效果(柱状图/折线图/饼图)
  16. LeetCode 875.爱吃香蕉的珂珂
  17. 闭区间上的连续函数必定是一致连续的
  18. 世纪大学计算机专业,世纪大学本科计算机专业教学改革研讨会暨年计算机专业核心课程 (21页)-原创力文档...
  19. CSS进阶之关于网格布局(Grid) 你了解哪些
  20. 学会这五个PPT制作技巧,告别小白式操作

热门文章

  1. 【数据结构】线性表的顺序存储结构及实现——C语言版
  2. minio分布式集群部署
  3. 暖通空调系统的IoT思考
  4. 模拟数字时钟走字60次
  5. python图像处理库哪个最快_10大最佳Python图像处理开源库
  6. java继承多个类_java 可不可以继承多个类
  7. JAVA入门算法题(十一)
  8. python 调用企查查接口平台
  9. OpenCV系列之ORB(面向快速和旋转的BRIEF) | 四十三
  10. 快数据时代下,Moka携手DataPipeline提升招聘效能