Todos los productos
Search
Centro de documentos

Hologres:Vista materializada

Última actualización: Sep 05, 2026

Una vista materializada almacena resultados precalculados de operaciones costosas, como JOIN y AGGREGATE. Esto permite que las consultas reutilicen dichos resultados en lugar de recalcularlos, lo cual acelera el rendimiento de las consultas.

Límites

Las vistas materializadas solo son compatibles con Hologres V1.3 y versiones posteriores. Si su instancia tiene una versión anterior, consulte Common errors when preparing for an upgrade o únase al grupo de DingTalk de Hologres para enviar sus comentarios. Para obtener más información, consulte How do I get more online support?.

Nota

Los límites detallados y las operaciones SQL se documentan en Manage materialized views with SQL.

Crear una vista materializada

  • Sintaxis

    Cree una vista materializada:

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

    mv_name: nombre de la vista materializada. QUERY BODY: sentencia de consulta. Para obtener más información, consulte SELECT.

  • Ejemplos

    • Cree una vista materializada para una tabla sin particiones.

      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');
    • Cree una vista materializada para una tabla con particiones.

      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 una vista materializada

Consulte una vista materializada:

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

Eliminar una vista materializada

  • Sintaxis

    Elimine una vista materializada:

    DROP MATERIALIZED VIEW <mv_name>;

    mv_name: nombre de la vista materializada.

  • Ejemplo

    DROP MATERIALIZED VIEW mv_sales;