多张数据表组成的视图,查询起来非常缓慢。可通过物化视图进行优化。
1,建立视图sql中基表的log(用作后续的fash刷新(增量刷新))
create MATERIALIZED VIEW LOG ON <基表名> with primary key;
alter MATERIALIZED VIEW LOG ON <基表名> add rowid;
ps: 这里通过rowid来建立,应该可以通过primary key来构建,不清楚为什么在建立物化视图是会提示错误。
2,建立物化视图:
create materialized view <视图名>
refresh fast on commit --基表有提交时立即更新
as
(SELECT rowid rid, ... from ..);
也可以设置为定时自动更新
create materialized view <视图名>
refresh fast on demand
start with sysdate
next sysdate+1/1440 with primary key --每分钟更新一次
as
(SELECT rowid rid, ... from ..);
!!!注意:存在物化视图LOG的库不能直接exp导出备份,必须先删除LOG才可以否则会报错
EXP-00008: 遇到 ORACLE 错误 1455
ORA-01455: 转换列溢出整数数据类型
EXP-00000: 导出终止失败
执行下面sql删除物化视图LOG
drop materialized VIEW log on <基表名>;
网友评论