物化视图

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

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

    • 全量刷新物化视图

    • 删除物化视图

      1. DROP MATERIALIZED VIEW [ view_name ];
    • 查询物化视图

    全量物化视图参数说明

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

    • AS query

      一个SELECT、TABLE 或者VALUES命令。

    1. --准备数据。
    2. openGauss=# CREATE TABLE t1(c1 int, c2 int);
    3. openGauss=# INSERT INTO t1 VALUES(1, 1);
    4. openGauss=# INSERT INTO t1 VALUES(2, 2);
    5. --创建全量物化视图。
    6. openGauss=# CREATE MATERIALIZED VIEW mv AS select count(*) from t1;
    7. CREATE MATERIALIZED VIEW
    8. --查询物化视图结果。
    9. openGauss=# SELECT * FROM mv;
    10. count
    11. -------
    12. 2
    13. (1 row)
    14. --向物化视图的基表中插入数据。
    15. openGauss=# INSERT INTO t1 VALUES(3, 3);
    16. INSERT 0 1
    17. --对全量物化视图做全量刷新。
    18. openGauss=# REFRESH MATERIALIZED VIEW mv;
    19. REFRESH MATERIALIZED VIEW
    20. --查询物化视图结果。
    21. openGauss=# SELECT * FROM mv;
    22. -------
    23. 3
    24. (1 row)
    25. --删除物化视图。
    26. openGauss=# DROP MATERIALIZED VIEW mv;
    27. DROP MATERIALIZED VIEW

    增量物化视图语法格式

    • 创建增量物化视图

      1. CREATE INCREMENTAL MATERIALIZED VIEW view_name AS query ;
    • 全量刷新物化视图

      1. REFRESH INCREMENTAL MATERIALIZED VIEW [ view_name ];
    • 删除物化视图

      1. DROP MATERIALIZED VIEW [ view_name ];
    • 查询物化视图

    • view_name

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

    • AS query

    增量物化视图示例

    1. --准备数据。
    2. openGauss=# CREATE TABLE t1(c1 int, c2 int);
    3. openGauss=# INSERT INTO t1 VALUES(1, 1);
    4. openGauss=# INSERT INTO t1 VALUES(2, 2);
    5. --创建增量物化视图。
    6. openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW mv AS SELECT * FROM t1;
    7. CREATE MATERIALIZED VIEW
    8. --插入数据。
    9. openGauss=# INSERT INTO t1 VALUES(3, 3);
    10. --增量刷新物化视图。
    11. openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW mv;
    12. REFRESH MATERIALIZED VIEW
    13. openGauss=# SELECT * FROM mv;
    14. c1 | c2
    15. ----+----
    16. 1 | 1
    17. 2 | 2
    18. 3 | 3
    19. (3 rows)
    20. --插入数据。
    21. openGauss=# INSERT INTO t1 VALUES(4, 4);
    22. INSERT 0 1
    23. --全量刷新物化视图。
    24. openGauss=# REFRESH MATERIALIZED VIEW mv;
    25. REFRESH MATERIALIZED VIEW
    26. --查询物化视图结果。
    27. openGauss=# select * from mv;
    28. c1 | c2
    29. ----+----
    30. 1 | 1
    31. 2 | 2
    32. 3 | 3
    33. 4 | 4
    34. (4 rows)
    35. --删除物化视图。
    36. DROP MATERIALIZED VIEW