物化视图

物化视图是Oracle数据库中预计算并存储复杂查询结果的数据结构,用于提高数据检索效率。创建物化视图时可选择立即或延迟生成数据,以及是否记录日志。刷新方式包括完全刷新和增量刷新,可设置定时或按需刷新。物化视图的删除、手动刷新及系统表查询提供了全面的管理选项。物化视图日志用于跟踪更改,以便增量刷新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)概念
物化视图 (Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,也可用于数据复制和增量数据收集。不同于普通视图只保存sql没有数据,物化视图相当于物理表,有自己的数据。

(2)创建
1.数据生成
Build immediate:在创建物化视图的同时根据主表生成数据(默认)
Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据

2.日志
默认保存在物化视图表空间
NOLOGGING:不记录
LOGGING:记录(默认)

3.刷新方式
Complete :完全刷新整个物化视图,相当于重新生成物化视图,消耗较大。
Fast:增量刷新,只刷新自上次刷新以后进行的修改,需要有物化视图日志。若选择增量刷新,且建立物化视图时不生成数据,需手动全量刷新物化视图才能生效。
Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(默认)

4.刷新时间
On demand:在需要刷新时进行刷新
On commit:在基表上有提交操作时,进行更新
Start with:指定首次刷新的时间
Next:刷新的周期时间
若start with 省略,则首次刷新时间按创建时间加上next时间
若next省略,则只刷新一次
若start with 和 next 都省略,不会自动刷新

5.基于主键与rowid
primary key:需要基表上有主键,可用于多表。(默认)
rowid:用于单表,不需要基表上有主键,快速刷新需要基表上有基于rowid 的物化视图日志,如
create MATERIALIZED VIEW log on t12 with rowid;
e.g
CREATE MATERIALIZED VIEW mv_t12 
NOLOGGING --不记录日志
BUILD DEFERRED --不马上生成数据 
REFRESH FORCE --当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新
START WITH SYSDATE --马上刷新
NEXT SYSDATE +1/( 24*60 ) --刷新间隔
WITH PRIMARY KEY --基于主键
AS 
SELECT * FROM t12;

(3)删除
drop MATERIALIZED VIEW view_name

(4)手动刷新
dbms_mview.refresh('表名','F'); --快速刷新,也就是增量刷新
dbms_mview.refresh('表名','C');   --完全刷新
dbms_mview.refresh('mv_t11','?');  --force刷新

(5)物化视图系统表
SELECT * FROM DBA_MVIEWS;

(6)物化视图日志
一.查询
select mlog$_表名 --查看物化视图日志内容 
select * from dba_mview_logs;--查看物化视图日志详细情况
二.创建
create materialized view view_name log on table;
三.删除
drop materialized view view_name log on table
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值