openGauss学习笔记-45 openGauss 高级数据管理-物化视图

文章目录

    • [openGauss学习笔记-45 openGauss 高级数据管理-物化视图](#openGauss学习笔记-45 openGauss 高级数据管理-物化视图)
      • [45.1 全量物化视图](#45.1 全量物化视图)
        • [45.1.1 全量物化视图语法格式](#45.1.1 全量物化视图语法格式)
        • [45.1.2 全量物化视图参数说明](#45.1.2 全量物化视图参数说明)
        • [45.1.3 全量物化视图示例](#45.1.3 全量物化视图示例)
      • [45.2 增量物化视图](#45.2 增量物化视图)
        • [45.2.1 增量物化视图语法格式](#45.2.1 增量物化视图语法格式)
        • [45.2.2 增量物化视图参数说明](#45.2.2 增量物化视图参数说明)
        • [45.2.3 增量物化视图示例](#45.2.3 增量物化视图示例)

openGauss学习笔记-45 openGauss 高级数据管理-物化视图

物化视图是相对普通视图而言的。普通视图是虚拟表,而物化视图实际上就是存储SQL执行语句的结果,可以直接使用数据而不用重复执行查询语句,从而提升性能。

按照刷新方式物化视图分为两种:

  • 全量物化视图:仅支持对已创建的物化视图进行全量更新,而不支持进行增量更新。创建全量物化视图语法和CREATE TABLE AS语法类似。
  • 增量物化视图:可以对物化视图增量刷新,需要用户手动执行语句完成对物化视图在一段时间内的增量数据刷新。与全量创建物化视图的不同在于目前增量物化视图所支持场景较小。目前物化视图创建语句仅支持基表扫描语句或者UNION ALL语句。

45.1 全量物化视图

45.1.1 全量物化视图语法格式

  • 创建全量物化视图

    sql 复制代码
    CREATE MATERIALIZED VIEW view_name AS query; 
  • 全量刷新物化视图

    sql 复制代码
    REFRESH MATERIALIZED VIEW [ view_name ];
  • 删除物化视图

    sql 复制代码
    DROP MATERIALIZED VIEW [ view_name ];
  • 查询物化视图

    sql 复制代码
    SELECT * FROM [ view_name ];

45.1.2 全量物化视图参数说明

  • view_name

    要创建的物化视图的名称。

  • AS query

    一个SELECT、TABLE 或者VALUES命令。

45.1.3 全量物化视图示例

bash 复制代码
--准备数据。
openGauss=# CREATE TABLE t1(c1 int, c2 int);
openGauss=# INSERT INTO t1 VALUES(1, 1);
openGauss=# INSERT INTO t1 VALUES(2, 2);

--创建全量物化视图。
openGauss=# CREATE MATERIALIZED VIEW mv AS select count(*) from t1;
CREATE MATERIALIZED VIEW

--查询物化视图结果。
openGauss=# SELECT * FROM mv;
 count 
-------
     2
(1 row)

--向物化视图的基表中插入数据。
openGauss=# INSERT INTO t1 VALUES(3, 3);
INSERT 0 1

--对全量物化视图做全量刷新。
openGauss=# REFRESH MATERIALIZED VIEW mv;
REFRESH MATERIALIZED VIEW

--查询物化视图结果。
openGauss=# SELECT * FROM mv;
 count 
-------
     3
(1 row)

--删除物化视图。
openGauss=# DROP MATERIALIZED VIEW mv;
DROP MATERIALIZED VIEW

45.2 增量物化视图

45.2.1 增量物化视图语法格式

  • 创建增量物化视图

    sql 复制代码
    CREATE INCREMENTAL MATERIALIZED VIEW  view_name  AS  query ; 
  • 全量刷新物化视图

    sql 复制代码
    REFRESH MATERIALIZED VIEW [ view_name ];
  • 增量刷新物化视图

    sql 复制代码
    REFRESH INCREMENTAL MATERIALIZED VIEW [ view_name ];
  • 删除物化视图

    sql 复制代码
    DROP MATERIALIZED VIEW [ view_name ];
  • 查询物化视图

    sql 复制代码
    SELECT * FROM [ view_name ];

45.2.2 增量物化视图参数说明

  • view_name

    要创建的物化视图的名称。

  • AS query

    一个SELECT、TABLE 或者VALUES命令。

45.2.3 增量物化视图示例

bash 复制代码
--准备数据。
openGauss=# CREATE TABLE t1(c1 int, c2 int);
openGauss=# INSERT INTO t1 VALUES(1, 1);
openGauss=# INSERT INTO t1 VALUES(2, 2);

--创建增量物化视图。
openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW mv AS SELECT * FROM t1;
CREATE MATERIALIZED VIEW

--插入数据。
openGauss=# INSERT INTO t1 VALUES(3, 3);
INSERT 0 1

--增量刷新物化视图。
openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW mv;
REFRESH MATERIALIZED VIEW

--查询物化视图结果。
openGauss=# SELECT * FROM mv;
 c1 | c2 
----+----
  1 |  1
  2 |  2
  3 |  3
(3 rows)

--插入数据。
openGauss=# INSERT INTO t1 VALUES(4, 4);
INSERT 0 1

--全量刷新物化视图。
openGauss=# REFRESH MATERIALIZED VIEW mv;
REFRESH MATERIALIZED VIEW

--查询物化视图结果。
openGauss=# select * from mv;
 c1 | c2 
----+----
  1 |  1
  2 |  2
  3 |  3
  4 |  4
(4 rows)

--删除物化视图。
openGauss=# DROP MATERIALIZED VIEW mv;
DROP MATERIALIZED VIEW

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

相关推荐
一只游鱼1 小时前
Redis入门(部署、持久化、缓存问题)
数据库·redis·缓存
北城以北88882 小时前
数据库--MySQL数据管理
数据库·mysql
代码的余温2 小时前
Oracle RAC共享存储核心技术
数据库·oracle
float_六七2 小时前
数据库物理外键与逻辑外键全解析
数据库·oracle
大白的编程日记.2 小时前
【MySQL】数据库的基本操作
数据库·mysql·oracle
Jamie Chyi2 小时前
【Oracle经验分享】字符串拼接过长问题的解决方案 —— 巧用 XMLAGG
数据库·oracle
代码的余温2 小时前
Oracle高可用与容灾解决方案
数据库·oracle
小蒜学长6 小时前
基于springboot 校园餐厅预约点餐微信小程序的设计与实现(代码+数据库+LW)
数据库·spring boot·微信小程序
kimble_xia@oracle6 小时前
Oracle打补丁笔记
数据库·oracle
鼠鼠我捏,要死了捏6 小时前
大规模系统中的分库分表原理深度解析与性能优化实践指南
数据库·性能优化·分库分表