Todos os produtos
Search
Central de documentação

Hologres:View materializada

Última atualização: Jun 28, 2026

Uma view materializada armazena resultados pré-computados de operações custosas, como JOIN e AGGREGATE. Isso permite que as consultas reutilizem esses resultados em vez de recalculá-los, o que acelera o desempenho das consultas.

Limites

O suporte a views materializadas está disponível apenas no Hologres V1.3 e versões posteriores. Se sua instância estiver em uma versão anterior, consulte Erros comuns ao se preparar para uma atualização ou entre no grupo do DingTalk do Hologres para enviar feedback. Para mais informações, consulte Como obtenho mais suporte online?.

Nota

Os limites detalhados e as operações SQL estão documentados em Gerenciar views materializadas com SQL.

Criar uma view materializada

  • Sintaxe

    Crie uma view materializada:

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

    mv_name: o nome da view materializada. QUERY BODY: a instrução de consulta. Para mais informações, consulte SELECT.

  • Exemplos

    • Crie uma view materializada para uma tabela não particionada.

      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');
      
      --After the materialized view is dropped, run the following command to disable the appendonly property for the source table.
      --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');
    • Crie uma view materializada para uma tabela particionada.

      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');
      
      --The day column is a partition key column and must be included in the GROUP BY clause of the view.
      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');

Consultar uma view materializada

Consulte uma view materializada:

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

Excluir uma view materializada

  • Sintaxe

    Exclua uma view materializada:

    DROP MATERIALIZED VIEW <mv_name>;

    mv_name: o nome da view materializada.

  • Exemplo

    DROP MATERIALIZED VIEW mv_sales;