达梦数据库 物化视图
视图分类:简单视图,复杂视图,物化视图。简单视图和复杂视图不占磁盘空间,实际上是一个虚表,真正的数据存储在 base table. 简单视图可以 DML(INSERT UPDATE DETLE);复杂视图不允许直接 DML,需要通过触发器来完成。触发器创建时,不需要使用 before after,而将替换成 instead of.当视图中包含以下结构之一,就是表示不可更新的视图,都不允许直接 DM
简介
视图分类:简单视图,复杂视图,物化视图。
简单视图和复杂视图不占磁盘空间,实际上是一个虚表,真正的数据存储在 base table. 简单视图可以 DML(INSERT UPDATE DETLE);
复杂视图不允许直接 DML,需要通过触发器来完成。触发器创建时,不需要使用 before after,而将替换成 instead of.
当视图中包含以下结构之一,就是表示不可更新的视图,都不允许直接 DML
具有集合操作的(union union all minus);
具有分组函数的
具有 group by having start…with
具有 distinct
具有集合运算连接。
物化视图:
数据要单独存储,占用磁用空间,规划表空间。
物化视图的数据来自于基表,基表发生变化,物化视图可以根据自己的更新方式来进行数据更新。
更新方式:
手动(默认的方式):demand
自动更新:commit
如何更新:
FAST ----快速更新
Complete —完全更新
Force —选择性更新
Never —不更新。
案例 1:创建一个手动更新的物化视图
create materialized view "SYSDBA"."MV_1"
/*视图的列名, 格式为(<列名>{, <列名>}),此处为可选*/
as
/*<查询说明>*/
SELECT * FROM SYSDBA.TABLE_1;
修改SYSDBA.TABLE_1,手动更新 MV_1,
refresh materialized view SYSDBA.MV_1;
案例 2:创建一个自动更新的物化视图
1)要有物化视图日志
2)要有主键
create materialized view log on SYSDBA.TABLE_2;
创建完全更新物化视图
create materialized view "SYSDBA"."MV_2"
/*视图的列名, 格式为(<列名>{, <列名>}),此处为可选*/
refresh on commit with primary key complete
as
/*<查询说明>*/
SELECT * FROM TABLE_2;
创建快速更新物化视图
create materialized view log on sysdba.TABLE_3;
create materialized view MV_3 refresh fast on commit as select * from sysdba.TABLE_3;
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)