Oracle——物化视图
文章目录
- 含义
- 物化视图的语法
- 物化视图的创建
- 1、自动刷新的物化视图 ON COMMIT
- 2、非自动刷新的物化视图 ON demand
- 关于手动刷新
- 物化视图的删除
- 资料参考
含义
什么是物化视图
?
物化视图,通俗点说就是
物理化
的视图。
什么叫物理化
?
将视图以表结构的方式,存储在磁盘中。
在之前的博客中针对普通视图说过,普通视图的本质就是一段 SQL 语句
,本身的数据不会存储在磁盘上,每次查询时,普通视图中的数据,来源于重新执行视图中的SQL语句
。
普通视图就是将
复杂的
、可共用的
SQL片段的封装。
但是,每次进行视图查询操作时,都将触发视图中的sql再次执行,程序的执行,存在执行快慢的问题,在程序界中存在一个说法叫时间复杂度
。
物化视图
相比普通视图而言,是将原本的普通视图中的SQL转换成了对应的表结构,并会在磁盘空间中进行存储。
可以理解为就是一张由SQL语句和查询字段构成的新的表。
当然,作为表
而言,相对应的比如索引
等操作也都可以实现。
但是物化视图
由于占用了更多的服务器内存空间,也就导致出现空间复杂度
的问题。
程序的效率,无非就是在
时间复杂度
与空间复杂度
的取舍。
物化视图的语法
物化视图的创建语法,如下所示:
create materialized
view [view_name]
[ build [immediate
|deferred
] ]
refresh [fast
|complete
|force
]
[
on [commit
|demand
] |
start with (start_time) next (next_time)
]
as
{创建物化视图用的查询语句}
其中,各项关键字说明如下:
名称 | 用途 | 含义 |
---|---|---|
materialized | 物化视图关键字 | 物理化 |
build immediate(默认) | 初始数据方式 | 物化视图首次创建后,就填充数据。 |
build deferred | 初始数据方式 | 首次创建物化视图,不填充数据。 |
fast | 刷新方式 | 增量更新,只会刷新自上次刷新以后的修改内容。 |
complete | 刷新方式 | 全部刷新。相当于重新执行一次创建视图的查询语句。 |
force(默认) | 刷新方式 | 由oracle在需要进行刷新操作时,当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式。 |
nerver | 刷新方式 | 视图不进行任何刷新操作。 |
on commit | 刷新时间(模态) |
在基表 数据事务提交 时,立即刷新对应物化视图。
|
on demand(默认) | 刷新时间(模态) | (oracle的默认类型)在用户需要刷新的时候进行刷新操作。这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新) |
start with (start_time) next (next_time) | 刷新时间 | 从指定的时间开始,每隔一段时间(由next指定)就刷新一次 |
物化视图的创建
1、自动刷新的物化视图 ON COMMIT
按照上面的语法与参数说明,创建一个简单的物化视图。
创建一张物化视图表,要求在事务提交后,立刻自动刷新物化视图数据。
create MATERIALIZED VIEW mv_bl_user_list
refresh force -- 由oracle决定该刷新的时候,采取何种方式执行
ON COMMIT -- 刷新模态,触发点
AS
SELECT * FROM bl_user_list
测试:
1、先执行物化视图的创建sql
2、查询基表数据信息
3、查询物化视图的数据信息
4、新增或者更新基表的数据
5、查询物化视图。
6、观察新增的数据是否自动刷新至物化视图中。
基表数据事务提交后,对应的物化视图数据也会同步及时变更!
2、非自动刷新的物化视图 ON demand
创建一个需要手动刷新数据
的物化视图。
CREATE MATERIALIZED VIEW mv_bl_user_list
refresh force
ON demand
AS
SELECT * FROM bl_user_list
测试:
1、先执行物化视图的创建sql
2、查询基表数据信息
3、查询物化视图的数据信息
4、新增或者更新基表的数据
5、查询物化视图。
6、观察新增的数据是否自动刷新至物化视图中。
基表的数据事务提交后,对应物化视图中的数据并不会自动刷新!
关于手动刷新
如果在创建物化视图时,设定刷新模态为 on demand
时,会需要用户进行手动刷新
操作。
比如,将上述的非自动刷新视图进行数据刷新操作。
begindbms_mview.refresh('mv_bl_user_list','COMPLETE');-- 'COMPLETE' 参数可以简写为 'C' ,如下sql也是可行的-- dbms_mview.refresh('mv_bl_user_list','C');
end;
物化视图的删除
drop materialized view 物化视图名
资料参考
Oracle物化视图-看这一篇就可以了
Oracle——物化视图相关推荐
- oracle 物化视图、中间表的方案
物化视图 有个项目因为有比较多的查询汇总,考虑到速度,所以使用了物化视图.简单的把用到的给整理了下.先看简单创建语句: create materialized view mv_materialized ...
- Oracle物化视图的创建及使用(一
Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create materialize ...
- Oracle物化视图的简单使用
最近有个项目因为有比较多的查询汇总,之前用的是oralce的临时表,但临时表的特性导致无法完成业务需求,所以使用了物化视图. 先看简单创建语句: //创建物化视图 create materialize ...
- Oracle物化视图与物化视图日志
文章目录 物化视图 物化视图与普通视图的区别 创建一个存放person的表 创建一个存放person的address的表 初始化数据 创建物化视图的语句 1.build [immediate|defe ...
- oracle 物化视图没效果,Oracle物化视图失效的几种情况及测试
物化视图(Materialized Views)是查询的结果集,所有原表和视图的变更都将导致物化视图的失效,最近就发现了一个物化视图经常失 说明:物化视图(Materialized Views)是查询 ...
- oracle物化视图视频,Oracle物化视图使用详解视频教程
课程目标 深刻理解Oracle物化视图的原理和应用场景,熟练通透地掌握物化视图的创建.刷新方式.物化视图日志.查询重写以及开发技巧. 适用人群 Oracle数据库工程师.Oracle DBA 课程概述 ...
- oracle 物化视图的自动刷新方法
oracle 物化视图的自动刷新方法: 方法1,直接在创建的时候,指定start with ,如下代表每分钟执行1次 create materialized view big_table_mv nol ...
- Oracle物化视图优化多表查询速度
近期项目中遇到有关报表查询sql速度过慢的问题,由于sql是多个表相关联的查询结果,并且数据量过大,所以导致查询速度过慢.为此,采用物化视图来提高查询速度. 1.物化视图概述 物化视图是包括一个查询结 ...
- oracle 物化视图使用,ORACLE 物化视图使用
当前位置:我的异常网» 数据库 » ORACLE 物化视图使用 ORACLE 物化视图使用 www.myexceptions.net 网友分享于:2013-08-18 浏览:20次 ORACLE ...
最新文章
- JSP页面Table的数据拼接
- Oracle代码大全.从入门到熟练
- ssl提高组周三备考赛【2018.10.31】
- matlab+stm32通讯,matlab与stm32之间利用串口通信记录
- mt6765和骁龙665哪个好_骁龙665+5000毫安大电池不到千元,手机厂商还要怎么玩?...
- 【转】计算机视觉简介
- 微软终于屈服和妥协:宣布加入 OpenJDK,贡献构建Java生态
- java事件轮询_用scala实现的nio事件轮询
- Web前端开发-网页制作零基础入门-Dreamweaver2019+HTML+CSS视频教程
- Ubuntu 安装微信网页版客户端
- JavaScript闭包,什么是闭包,对闭包的理解
- 如何提高软件测试能力的19条建议,希望对你有用
- Java毕业设计-音乐管理系统
- 浅析MySQL恶意服务器读取文件原理
- 大商创 常见问题 mysql_大商创手机端出现404的官方解决方案
- linux查询当前目录剩余空间,如何在linux下查看目录的剩余空间大小
- 四元数和欧拉角的个人理解
- mysql介绍——基础知识
- A级和AA级哪个好?护眼灯A级和AA级的区别
- 【虚拟现实】Unity3D+VR的实现