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

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

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

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

相关推荐
viperrrrrrrrrr716 分钟前
大数据学习(95)-谓词下推
大数据·sql·学习
嘉友25 分钟前
Redis zset数据结构以及时间复杂度总结(源码)
数据结构·数据库·redis·后端
morganmin36 分钟前
(一)MySQL常见疑惑之:select count(*)和select count(1)的区别
数据库·mysql
深圳厨神1 小时前
mysql对表,数据,索引的操作sql
数据库·sql·mysql
谁家有个大人1 小时前
数据分析问题思考路径
数据库·数据分析
小陈又菜2 小时前
MySQL-触发器
数据库·mysql·database·触发器
爱的叹息2 小时前
详解隔离级别(4种),分别用表格展示问题出现的过程及解决办法
数据库·oracle
平凡的小y2 小时前
MySQL内置函数
数据库·mysql
佩奇的技术笔记2 小时前
中级:MyBatis面试题深度剖析
数据库·mybatis
luluoluoa2 小时前
SQL、mySQL与SQLite简单理解
sql·mysql·sqlite