`

Oracle物化视图语法

 
阅读更多
物化视图概述:



    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物化视图是一种数据库对象,它存储了查询结果,以提供快速的数据访问,特别适合于需要频繁查询但计算过程复杂或涉及大量数据连接的场景。物化视图的使用可以显著提高查询性能,因为它避免了每次查询时的计算...

    Oracle物化视图增量刷新的应用研究.pdf

    "Oracle 物化视图增量刷新的应用研究" Oracle 物化视图是 Oracle 公司提供的一种新技术,可以解决很多普通逻辑视图无法完成的功能。物化视图操作简单,支持增量刷新及全量刷新,可以支持复杂的表连接、聚合函数等...

    Oracle物化视图介绍

    ### Oracle物化视图介绍及应用详解 #### 一、物化视图概念与作用 在Oracle数据库中,物化视图(Materialized View, MV)是一种预计算并存储的查询结果,它能够显著提高复杂查询的性能。通常情况下,复杂的查询涉及到...

    oralce创建物化视图

    oralce创建物化视图,基本语法,基本操作

    OCM考试实验笔记之一_物化视图.pdf

    创建物化视图日志的语法类似于: ```sql CREATE MATERIALIZED VIEW LOG ON t1 WITH PRIMARY KEY INCLUDING NEW VALUES; ``` 5. 当物化视图包含最大值(MAX)或最小值(MIN)函数时,无法使用快速刷新。在这种...

    ORACLE和SQL语法区别归纳

    - Oracle是甲骨文公司开发的关系数据库管理系统,它遵循SQL标准,但添加了许多自己的扩展和优化,如PL/SQL编程语言、物化视图、分区表等。 2. **数据类型的区别** - SQL标准定义了基本的数据类型,如INT、VARCHAR...

    oracle视图详解

    Oracle 视图详解 Oracle 视图(View)是一种逻辑表,基于一个或多个实际表...在 Oracle 中,还有一种视图:物化视图(MATERIALIZED VIEW),也称实体化视图,快照(8i 以前的说法),它是含有数据的,占用存储空间。

    自己总结的数据库oracle视图用法

    在Oracle中,还可以创建物化视图,这种视图会预先计算并存储结果,适用于需要定期更新且查询频繁的数据。物化视图的刷新可以是手动的,也可以设置为自动定时刷新,以保持数据的实时性。 总的来说,Oracle视图是...

    oracle数据快照

    - **创建物化视图日志的基本语法**: ```sql CREATE MATERIALIZED VIEW LOG ON table_name WITH PRIMARY KEY, INCLUDING NEW VALUES; ``` 其中: - `table_name` 是要创建物化视图日志的表名。 - `WITH ...

    Oracle语法指南.zip

    5. **物化视图**:预先计算并存储视图的结果,提高查询速度。 6. **触发器**:在特定数据库事件发生时自动执行的PL/SQL代码。 7. **数据库链接**:在不同Oracle实例间进行通信和数据共享。 8. **性能优化**:使用...

    oracle view

    Oracle物化视图是数据库管理中的一个重要概念,它是一个包含了查询结果的数据库对象,它可以是远程数据的本地副本,或者用于生成基于数据表的汇总表。物化视图的主要作用在于提供数据的本地缓存,优化查询性能,尤其...

    oracle10g语法大全

    物化视图是预先计算好的视图,存储实际数据,提供快速查询性能。`CREATE MATERIALIZED VIEW`创建物化视图,可设置刷新策略。 13. **存储过程和函数** 存储过程是预编译的PL/SQL代码块,而函数返回值。它们可以...

    oracle全面语法-扩展附件

    4. **SQL性能优化**:在"实战开发"部分,可能涵盖如何通过索引、物化视图、分区、绑定变量等方式提升查询速度。优化查询是数据库管理员的日常工作,有效的优化策略可以显著提升系统性能。 5. **存储过程和触发器**...

    19.Oracle视图1

    2. **物化视图**:物化视图是存储了查询结果的物理表,常用于数据仓库和OLAP系统中,以提高查询性能,但使用并不广泛。 总之,Oracle视图作为数据访问的窗口,提供了数据安全、简化查询、权限管理和业务逻辑封装等...

    oracle+SQL语法大全

    Oracle SQL是一种用于管理和操作Oracle数据库的强大查询语言。它在数据管理、数据分析以及应用程序开发中扮演...在实践中,你还可以探索更多高级特性和技术,如物化视图、分区表、索引组织表等,进一步提升数据库性能。

    Oracle讲义 SQL语法规则

    3. Materialized Views:物化视图,预先计算好的视图,用于快速查询。 通过深入学习和实践这些Oracle SQL语法规则,你可以更有效地管理和操作数据库,提升数据库管理能力。记得理论结合实际,多动手练习,才能更好...

    oracle一些基本语法的学习资料

    Oracle数据库是世界上最广泛使用的数据库系统之一,以其强大的功能和稳定...继续深入,你会发现Oracle还有更多的高级特性,如分区、物化视图、触发器等,等待你去探索。不断实践,你将成为一名精通Oracle的数据库专家。

    oracle和SQL的语法区别

    综上所述,Oracle和SQL Server在基本语法上有很多相似之处,但在函数、索引、视图、事务处理和权限管理等方面存在显著差异。理解这些差异对于进行数据库移植和编写跨平台代码至关重要。在实际操作中,开发者应根据...

    Oracle_create_tablespace语法详解.docx

    Logging 子句用于声明这个表空间上所有的用户对象的日志属性,包括表,索引,分区,物化视图,物化视图上的索引,分区。 七、FORCE LOGGING 设置 FORCE LOGGING 设置用于强制表空间进入日志模式。此时,系统将记录...

    oracle SQL语法大全

    3. materialized views(物化视图):预先计算好的视图,提供快速的数据汇总和报表生成。 4. PL/SQL:Oracle的内置过程式语言,结合了SQL和面向过程编程,用于编写存储过程、触发器和函数。 5. 游标:在PL/SQL中,...

Global site tag (gtag.js) - Google Analytics