文章目录

  • 含义
  • 物化视图的语法
  • 物化视图的创建
    • 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——物化视图相关推荐

  1. oracle 物化视图、中间表的方案

    物化视图 有个项目因为有比较多的查询汇总,考虑到速度,所以使用了物化视图.简单的把用到的给整理了下.先看简单创建语句: create materialized view mv_materialized ...

  2. Oracle物化视图的创建及使用(一

    Oracle物化视图的创建及使用  http://blog.csdn.net/tegwy/article/details/8935058  先看简单创建语句: create   materialize ...

  3. Oracle物化视图的简单使用

    最近有个项目因为有比较多的查询汇总,之前用的是oralce的临时表,但临时表的特性导致无法完成业务需求,所以使用了物化视图. 先看简单创建语句: //创建物化视图 create materialize ...

  4. Oracle物化视图与物化视图日志

    文章目录 物化视图 物化视图与普通视图的区别 创建一个存放person的表 创建一个存放person的address的表 初始化数据 创建物化视图的语句 1.build [immediate|defe ...

  5. oracle 物化视图没效果,Oracle物化视图失效的几种情况及测试

    物化视图(Materialized Views)是查询的结果集,所有原表和视图的变更都将导致物化视图的失效,最近就发现了一个物化视图经常失 说明:物化视图(Materialized Views)是查询 ...

  6. oracle物化视图视频,Oracle物化视图使用详解视频教程

    课程目标 深刻理解Oracle物化视图的原理和应用场景,熟练通透地掌握物化视图的创建.刷新方式.物化视图日志.查询重写以及开发技巧. 适用人群 Oracle数据库工程师.Oracle DBA 课程概述 ...

  7. oracle 物化视图的自动刷新方法

    oracle 物化视图的自动刷新方法: 方法1,直接在创建的时候,指定start with ,如下代表每分钟执行1次 create materialized view big_table_mv nol ...

  8. Oracle物化视图优化多表查询速度

    近期项目中遇到有关报表查询sql速度过慢的问题,由于sql是多个表相关联的查询结果,并且数据量过大,所以导致查询速度过慢.为此,采用物化视图来提高查询速度. 1.物化视图概述 物化视图是包括一个查询结 ...

  9. oracle 物化视图使用,ORACLE 物化视图使用

    当前位置:我的异常网» 数据库 » ORACLE 物化视图使用 ORACLE 物化视图使用 www.myexceptions.net  网友分享于:2013-08-18  浏览:20次 ORACLE ...

最新文章

  1. JSP页面Table的数据拼接
  2. Oracle代码大全.从入门到熟练
  3. ssl提高组周三备考赛【2018.10.31】
  4. matlab+stm32通讯,matlab与stm32之间利用串口通信记录
  5. mt6765和骁龙665哪个好_骁龙665+5000毫安大电池不到千元,手机厂商还要怎么玩?...
  6. 【转】计算机视觉简介
  7. 微软终于屈服和妥协:宣布加入 OpenJDK,贡献构建Java生态
  8. java事件轮询_用scala实现的nio事件轮询
  9. Web前端开发-网页制作零基础入门-Dreamweaver2019+HTML+CSS视频教程
  10. Ubuntu 安装微信网页版客户端
  11. JavaScript闭包,什么是闭包,对闭包的理解
  12. 如何提高软件测试能力的19条建议,希望对你有用
  13. Java毕业设计-音乐管理系统
  14. 浅析MySQL恶意服务器读取文件原理
  15. 大商创 常见问题 mysql_大商创手机端出现404的官方解决方案
  16. linux查询当前目录剩余空间,如何在linux下查看目录的剩余空间大小
  17. 四元数和欧拉角的个人理解
  18. mysql介绍——基础知识
  19. A级和AA级哪个好?护眼灯A级和AA级的区别
  20. 【虚拟现实】Unity3D+VR的实现

热门文章

  1. 【ATF】庄卓然(南天):掌上精彩-连接过去与未来
  2. CART分类回归树算法
  3. 电路及电路设计经验技巧大合集
  4. jq处理数据库中的json数据
  5. 微信小程序一些常用标签与html的对应关系
  6. 【技术分享】IS-IS 概述
  7. SAP新的Activate实施方法论都有什么变化
  8. 关于iPhone X下Home Indicator(白条)的隐藏和延迟响应
  9. http_proxy设置
  10. linux开放7050端口,Linux操作系统内核启动参数详细解析