注册
创建物化视图
技术分享/ 文章详情 /

创建物化视图

Chai 2025/07/04 14 0 0

–一、创建快速刷新的物化视图,这个是通过增量数据进行刷新,可以自动刷新,但是查询语句不能包含集函数
–创建物化视图日志,快速刷新必须创建这个日志(必须存在主键)
create materialized view log on TEST123;

–创建物化视图MV_TEST123
CREATE MATERIALIZED VIEW MV_TEST1234
–BUILD IMMEDIATE 为立即填充数据,默认为立即填充;BUILD DEFERRED 为延迟填充,使用这种方式要求第一次刷新必须为 COMPLETE 完全刷新;
BUILD IMMEDIATE
–刷新模式:
–1、REFRESH FAST(根据相关表上的数据更改记录进行增量刷新。普通 DML 操作生成的记录存在于物化视图日志。使用 FAST 刷新之前,必须先建好物化视图日志。)
–2、REFRESH COMPLETE(通过执行物化视图的定义脚本进行完全刷新。)
–3、REFRESH FORCE(默认选项。当快速刷新可用时采用快速刷新,否则采用完全刷新。)
REFRESH FAST
–刷新时机:
–1、ON DEMAND(由用户通过 REFRESH 语法进行手动刷新。如果指定了 START WITH 和 NEXT 子句就没有必要指定 ON DEMAND。)
–2、ON COMMIT(在相关表上事务提交时进行快速刷新。刷新是由异步线程执行的,因此 COMMIT 执行结束后可能需要等待一段时间物化视图数据才是最新的。包含远程表的物化视图不支持 ON COMMIT 快速刷新。)
–3、START WITH 用于指定首次刷新物化视图的时间,NEXT 指定自动刷新的间隔;
–如果省略 START WITH 则首次刷新时间为当前时间加上 NEXT 指定的间隔;如果指定 START WITH 省略 NEXT 则物化视图只会刷新一次;如果二者都未指定物化视图不会自动刷新。
ON COMMIT
–刷新规则:
–1、WITH PRIMARY KEY默认选项。
–若显式指定刷新方法为 FAST,则必须含有 PRIMARY KEY 约束,此时选择列必须直接含有所有的 PRIMARY KEY(UPPER(col_name)的形式不可接受);
–2、WITH ROWID,如果使用 WITH ROWID 的同时使用快速刷新,则必须将 ROWID 提取出来,和其他列名一起,以别名的形式显示
WITH PRIMARY KEY
–QUERY REWRITE 选项
–DISABLE 禁止物化视图用于查询改写
DISABLE QUERY REWRITE
AS
SELECT * FROM TEST123;

–查询物化视图
SELECT * FROM MV_TEST1234;

–二、创建全量刷新的物化视图,这个是通过增量数据进行刷新,但是查询语句不能包含集函数

–该方式可以做到自动刷新, 即TEST123表中添加数据,查询物化视图的最大id也会自动变更为最新的

–创建物化视图MV_TEST123
CREATE MATERIALIZED VIEW MV_TEST1234
–BUILD IMMEDIATE 为立即填充数据,默认为立即填充;BUILD DEFERRED 为延迟填充,使用这种方式要求第一次刷新必须为 COMPLETE 完全刷新;
BUILD IMMEDIATE
–刷新模式:
–1、REFRESH FAST(根据相关表上的数据更改记录进行增量刷新。普通 DML 操作生成的记录存在于物化视图日志。使用 FAST 刷新之前,必须先建好物化视图日志。)
–2、REFRESH COMPLETE(通过执行物化视图的定义脚本进行完全刷新。)
–3、REFRESH FORCE(默认选项。当快速刷新可用时采用快速刷新,否则采用完全刷新。)
REFRESH COMPLETE
–刷新时机:
–1、ON DEMAND(由用户通过 REFRESH 语法进行手动刷新。如果指定了 START WITH 和 NEXT 子句就没有必要指定 ON DEMAND。)
–2、ON COMMIT(在相关表上事务提交时进行快速刷新。刷新是由异步线程执行的,因此 COMMIT 执行结束后可能需要等待一段时间物化视图数据才是最新的。包含远程表的物化视图不支持 ON COMMIT 快速刷新。)
–3、START WITH 用于指定首次刷新物化视图的时间,NEXT 指定自动刷新的间隔;
–如果省略 START WITH 则首次刷新时间为当前时间加上 NEXT 指定的间隔;如果指定 START WITH 省略 NEXT 则物化视图只会刷新一次;如果二者都未指定物化视图不会自动刷新。
ON COMMIT
–刷新规则:
–1、WITH PRIMARY KEY默认选项。
–若显式指定刷新方法为 FAST,则必须含有 PRIMARY KEY 约束,此时选择列必须直接含有所有的 PRIMARY KEY(UPPER(col_name)的形式不可接受);
–2、WITH ROWID,如果使用 WITH ROWID 的同时使用快速刷新,则必须将 ROWID 提取出来,和其他列名一起,以别名的形式显示
WITH PRIMARY KEY
–QUERY REWRITE 选项
–DISABLE 禁止物化视图用于查询改写
DISABLE QUERY REWRITE
AS
SELECT MAX(ID) AS “ID” FROM TEST123;

–查询物化视图
select * from MV_TEST123;

–查询物化视图信息
select * from SYS.USER_MVIEWS;

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服