没有合适的资源?快使用搜索试试~ 我知道了~
大家可以多考虑考虑,优化数据的方法很多。选择最好的
资源详情
资源评论
资源推荐
ORACLE 中的物化(实体)视图
物化视图是包括一个查询结果的数据库对像,它是远程数据的的
本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基
于远程表的数据,也可以称为快照。
物化视图可以查询表,视图和其它的物化视图。
通常情况下,物化视图被称为主表(在复制期间)或明细表(在
数据仓库中)。
对于复制,物化视图允许你在本地维护远程数据的副本,这些副本
是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想
从一个表或视图中抽取数据时,你可以用从物化视图中抽取。
对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表
聚合视图和连接视图。
本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。
在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询
视图。
1.主键物化视图:
下面的语法在远程数据库表 emp 上创建主键物化视图
SQL> CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1/48
WITH PRIMARY KEY
1
AS SELECT * FROM emp@remote_db;
Materialized view created.
注意:当用 FAST 选项创建物化视图,必须创建基于主表的视
图日志,如下:
SQL> CREATE MATERIALIZED VIEW LOG ON emp;
Materialized view log created.
2.Rowid 物化视图
下面的语法在远程数据库表 emp 上创建 Rowid 物化视图
SQL> CREATE MATERIALIZED VIEW mv_emp_rowid
REFRESH WITH ROWID
AS SELECT * FROM emp@remote_db;
Materialized view log created.
3.子查询物化视图
下面的语法在远程数据库表 emp 上创建基于 emp 和 dept 表的
子查询物化视图
SQL> CREATE MATERIALIZED VIEW mv_empdept
AS SELECT * FROM emp@remote_db e
WHERE EXISTS
(SELECT * FROM dept@remote_db d
WHERE e.dept_no = d.dept_no)
Materialized view log created.
REFRESH 子句
2
[refresh [fast|complete|force]
[on demand | commit]
[start with date] [next date]
[with {primary key|rowid}]]
Refresh 选项说明:
a. oracle 用刷新方法在物化视图中刷新数据.
b. 是基于主键还是基于 rowid 的物化视图
c. 物化视图的刷新时间和间隔刷新时间
Refresh 方法-FAST 子句
增量刷新用物化视图日志(参照上面所述)来发送主表已经修改
的数据行到物化视图中.如果指定 REFRESH FAST 子句,那么应该对
主表创建物化视图日志
SQL> CREATE MATERIALIZED VIEW LOG ON emp;
Materialized view log created.
对于增量刷新选项,如果在子查询中存在分析函数,则物化视图
不起作用。
Refresh 方法- COMPLETE 子句
完全刷新重新生成整个视图,如果请求完全刷新,oracle 会完成
完全刷新即使增量刷新可用。
3
Refresh Method – FORCE 子句
当指定 FORCE 子句,如果增量刷新可用 Oracle 将完成增量刷新,
否则将完成完全刷新,如果不指定刷新方法(FAST, COMPLETE, or
FORCE),Force 选项是默认选项
主键和 ROWD 子句
WITH PRIMARY KEY 选项生成主键物化视图,也就是说物化视图
是基于主表的主键,而不是 ROWID(对应于 ROWID 子句). PRIMARY
KEY 是默认选项,为了生成 PRIMARY KEY 子句,应该在主表上定义
主键,否则应该用基于 ROWID 的物化视图.
主键物化视图允许识别物化视图主表而不影响物化视图增量刷新
的可用性。
Rowid 物化视图只有一个单一的主表,不能包括下面任何一项:
Distinct 或者聚合函数.
Group by ,子查询,连接和 SET 操作
刷新时间
START WITH 子句通知数据库完成从主表到本地表第一次复制的
时间,应该及时估计下一次运行的时间点, NEXT 子句说明了刷新的
间隔时间.
SQL> CREATE MATERIALIZED VIEW mv_emp_pk
4
REFRESH FAST
START WITH SYSDATE
NEXT SYSDATE + 2
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
Materialized view created.
在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每
两天刷新一次.
总结
物化视图提供了可伸缩的基于主键或 ROWID 的视图,指定了刷新方
法和自动刷新的时间。
物化视图的效率
有两个表:人员表 A001 有 10 万数据,机构表 B001 有 5 千数据
建普通视图:
create or replace view test_v as
select * from A001 a ,B001 B where a.a001721=b.orguid
建一个物化视图
5
剩余34页未读,继续阅读
jiliang_0403
- 粉丝: 1
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0