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 小时前
28-ORA-01110数据文件读取错误
数据库·oracle
凯凯姜1 小时前
MySQL 联合索引设计与索引失效
数据库·mysql
猫咪很可爱1 小时前
Oracle TEMP 表空间不足(ORA-01652)问题分析与优化实践
数据库·oracle
九零HTTP3 小时前
10月21号-CSDN配菜-IP池的5个坑
服务器·数据库·tcp/ip
Data-Miner3 小时前
需要做财务数据分析,有什么好用的工具?从准备到出报告的实操指南
大数据·数据库·数据分析
袋鼠云数栈4 小时前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
这个DBA有点耶4 小时前
期货 CTP 系统 Oracle RAC 迁移国产库实战:读写分离架构设计与性能对标
数据库·架构·dba
数据库安全4 小时前
AI数据访问安全 |如何控制AI访问权限,防止越权
数据库·安全
程序员老赵5 小时前
Docker 部署 Hue:轻松搭建数据库与数据仓库 SQL 查询平台
sql·docker·开源
这个DBA有点耶5 小时前
Redo Log循环写与checkpoint推进:长事务阻塞下的Checkpoint风暴完整链路
数据库·mysql·代码规范