创建物化视图的语法
1、物化视图概念:将视图中查询出来的数据存储到一张表中。
2、优点:查询速度比视图要快。
3、缺点:占用资源,并且要时时更新数据。
4、创建物化视图
CREATE METERIALIZED VIEW view_name
[BUILD IMMEDIATE | BUILD DEFERRED ]
REFRESH [FAST|COMPLETE|FORCE]
[
ON [COMMIT |DEMAND ] | START WITH (start_time) NEXT
(next_time)
]
AS
Subquery
- METERIALIZED:实体化。
- BUILD IMMEDIATE: 创建物化视图的时候就生成数据。
- BUILD DEFERRED:创建物化视图的时候不生成数据。 默认为 BUILD IMMEDIATE
- FAST:快速刷新,增量刷新。
- COMPLETE:基表更新,删除物化视图数据,重新生成数据。
- FORCE:自动选择,能增量刷新就增量,不能增量就完全刷新。
默认为FORCE - ON COMMIT:基表变化,物化视图就刷新。
- ON DEMAND:手动刷新 默认:ON DEMAND
创建手动刷新的物化视图
创建物化视图默认为手动刷新ON DEMAND,基表如果数据发生变化,物化视图中的表不会发生变化,需要手动进行刷新。
1、--需求:查询地址 ID,地址名称和所属区域名称
create materialized view view_address1 as
select ad.id,ad.name,ar.name arname
from t_address ad,t_area ar
where ad.areaid=ar.id
--删除物化视图
drop materialized view view_address1;
2、--物化视图一般以mv开头
create materialized view mv_address1 as
select ad.id,ad.name,ar.name arname
from t_address ad,t_area ar
where ad.areaid=ar.id
--查询物化视图
select * from mv_address1;
3、--向基表插入数据
insert into t_address values(8,'西三旗',2,2);
commit;
--查询t_address
select * from t_address;
4、--执行刷新语句
begin
DBMS_MVIEW.refresh('MV_ADDRESS1','C');
end;
5、--向基表插入数据
insert into t_address values(9,'西四旗',2,2);
commit;
6、--命令窗口更新刷新数据(了解)
EXEC DBMS_MVIEW.refresh('MV_ADDRESS1','C');