日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MATERIALIZED VIEW

物化視圖(Materialized View)本質是一種預計算,即把某些耗時的操作(例如JOIN、AGGREGATE)的結果保存下來,以便在查詢時直接復用,從而避免這些耗時的操作,最終達到加速查詢的目的。本文為您介紹物化視圖相關命令。

使用限制

僅Hologres V1.3及以上版本支持物化視圖,如果您的實例是V1.3以下版本,請您使用自助升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

說明

更多使用限制和操作請參見SQL管理物化視圖

創建物化視圖

  • 命令語法。

    創建物化視圖的語法格式如下。

    CREATE  MATERIALIZED VIEW <mv_name>
    AS
    <QUERY BODY>;

    mv_name為自定義物化視圖名稱;QUERY BODY為查詢語句,詳情請參見SELECT

  • 使用示例。

    • 非分區表創建物化視圖。

      BEGIN;
      CREATE TABLE base_sales(
        day text not null,
        hour int ,
        ts timestamptz,
        amount float,
        pk text not null primary key
      );
      CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'appendonly');
      
      --當實時物化視圖被Drop后,可以取消明細表的appendonly屬性,執行以下命令
      --CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'none');
      
      CREATE MATERIALIZED VIEW mv_sales AS
        SELECT
          day,
          hour,
          avg(amount) AS amount_avg
        FROM base_sales
        GROUP BY day, hour;
      
      COMMIT;
      
      insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),100,'pk1');
      insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),200,'pk2');
      insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),300,'pk3');
    • 分區表創建物化視圖。

      BEGIN;
      CREATE TABLE base_sales_p(
        day text not null,
        hour int,
        ts timestamptz,
        amount float,
        pk text not null,
        primary key (day, pk)
      ) partition by list(day);
      CALL SET_TABLE_PROPERTY('base_sales_p', 'mutate_type', 'appendonly');
      
      --day是分區列,要出現在視圖的group by的條件中
      CREATE MATERIALIZED VIEW mv_sales_p AS
        SELECT
          day,
          hour,
          avg(amount) AS amount_avg
        FROM base_sales_p
        GROUP BY day, hour;
      COMMIT;
      
      create table base_sales_20220101 partition of base_sales_p for values in('20220101');

查詢物化視圖

您可以使用如下SQL查看已經創建的物化視圖。

SELECT * FROM mv_sales WHERE day = to_char(now(),'YYYYMMDD') AND hour = 12;

刪除物化視圖

  • 命令語法。

    刪除視圖的語法格式如下。

    DROP MATERIALIZED VIEW <mv_name>;

    mv_name為物化視圖名稱。

  • 使用示例。

    DROP MATERIALIZED VIEW mv_sales;