Tous les produits
Search
Centre de documentation

Hologres:Vue matérialisée

Dernière mise à jour :Aug 11, 2026

Une vue matérialisée stocke les résultats précalculés d'opérations coûteuses telles que les jointures (JOIN) et les agrégations (AGGREGATE). Les requêtes peuvent ainsi réutiliser ces résultats au lieu de les recalculer, ce qui améliore les performances.

Limites

Les vues matérialisées sont prises en charge uniquement à partir de la version V1.3 de Hologres. Si votre instance utilise une version antérieure, consultez la section Erreurs courantes lors de la préparation d'une mise à niveau ou rejoignez le groupe DingTalk de Hologres pour obtenir de l'aide. Pour plus d'informations, consultez la rubrique Comment obtenir un support en ligne supplémentaire ?.

Remarque

Vous trouverez les limites détaillées et les opérations SQL associées dans la rubrique Gestion des vues matérialisées avec SQL.

Créer une vue matérialisée

  • Syntaxe

    Créez une vue matérialisée :

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

    mv_name : nom de la vue matérialisée. QUERY BODY : instruction de requête. Pour plus d'informations, consultez la rubrique SELECT.

  • Exemples

    • Créez une vue matérialisée pour une table non partitionnée.

      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');
    • Créez une vue matérialisée pour une table partitionnée.

      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');

Interroger une vue matérialisée

Interrogez une vue matérialisée :

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

Supprimer une vue matérialisée

  • Syntaxe

    Supprimez une vue matérialisée :

    DROP MATERIALIZED VIEW <mv_name>;

    mv_name : nom de la vue matérialisée.

  • Exemple

    DROP MATERIALIZED VIEW mv_sales;