普通视图
普通视图是虚拟表,不存储任何数据,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。
物化视图
物化视图是一种特殊的物理表,会占用数据库磁盘空间,具有表一样的特征,可以像对表一样为它创建索引,创建方法
物化视图的类型
ON DEMAND
ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性
ON COMMIT
ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。
四种刷新方式
FAST
采用增量刷新,只刷新自上次刷新以后进行的修改
COMPLETE
对整个物化视图进行完全的刷新
FORCE
在刷新时去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式
NEVER
不进行任何刷新
常用语句
— 创建物化视图
create materialized view mv_name as select * from table_name
— 创建ON COMMIT物化视图
create materialized view mv_name refresh force on commit as select * from table_name
— 指定物化视图每天刷新一次
create materialized view mv_name refresh force on demand start with sysdate next sysdate+1
— 每天晚上10:00定时刷新一次
create materialized view mv_name refresh force on demand start with sysdate next to_date( concat( to_char( sysdate+1,’dd-mm-yyyy’),’ 22:00:00′),’dd-mm-yyyy hh24:mi:ss’)
— 删除物化视图
drop materialized view mv_name