Oracle 物化视图

1.物化视图的概念

视图(view)是一种虚表,其目的仅仅是为了方便我们进行综合数据的查询而已,它并不能帮助我们提高查询的性能。
而物化视图比较特殊,它一种特殊的物理表,其物化(materialized)是相对普通视图而言的。
物化视图主要有以下几个特点:

  • 物化视图某种意义上来说就是一个物理表,可以通过user_tables进行查询。
  • 物化视图也是一种段(segment),有自己的物理属性
  • 物化视图会占用数据库磁盘空间

2.物化视图的类型

针对对于物化视图数据的更新方式,可将物化视图分为手工刷新(ON DEMAND)自动刷新(ON COMMIT)*两类,

  • 手动刷新
    手动刷新,即需要物化视图进行刷新时,才对物化视图进行刷新,将其与基表数据保持一致,这是创建物化视图时的默认选项。

  • 自动刷新
    自动刷新,会在基表数据变更,即commit后,会立即更新物化视图,保持与基表数据的一致性。

3.物化视图的语法

3.1.创建

  • 基本语法
    CREATE MATERIALIZED VIEW 视图名称 [可选参数项] AS SELECT * FROM 基表名;
    
  • 可选参数项
    • BULID [IMMEDIATE,DEFERED]

      • BULID IMMEDIATE:创建视图时立即生成数据,默认参数。
      • BULID DEFERED:创建视图时现不生成数据,先创建逻辑,待下次更新时生成数据。
    • REFERSH [FAST,COMPLETE,FORCE,NEVER]

      • REFERSH FAST:快速刷新,即增量更新。
      • REFERSH COMPLETE:全表刷新。
      • REFERSH FORCE:在增量更新可用的情况下会选择增量更新,不可用的情况下进行全表刷新。
      • REFERSH NEVER:不刷新数据。
    • ON [DEMAND,COMMIT]

      • ON DEMAND:手工刷新,默认参数。
      • ON COMMIT:自动刷新。
    • START WITH
      通知数据库完成从基表到本地表第一次复制的时间。

    • NEXT
      设定时间的刷新间隔, 下次刷新时间 = 上次执行完成时间 + 时间间隔

3.2.删除

  • DROP MATERIALIZED VIEW 视图名称;
    

4.物化视图的实例

  • 实例1:自动刷新

    CREATE MATERIALIZED VIEW MV_DEMO1
    REFERSH FORCE
    ON COMMIT
    AS 
    SELECT * FROM TABLE_A;
    
  • 实例2:手动刷新

    CREATE MATERIALIZED VIEW MV_DEMO1
    REFERSH FORCE
    ON DEMAND
    START WITH SYSDATE
    NEXT SYSDATE + 1
    AS 
    SELECT * FROM TABLE_A;
    
  • 实例3:增量刷新

    CREATE MATERIALIZED VIEW LOG ON TABLE_A WITH ROWID;
    CREATE MATERIALIZED VIEW MV_DEMO1
    REFERSH FAST
    ON DEMAND
    START WITH SYSDATE
    NEXT SYSDATE + 1/1440
    AS 
    SELECT * FROM TABLE_A;
    
posted @ 2020-10-17 18:09  orz_cc  阅读(277)  评论(0编辑  收藏  举报