Vues matérialisées
Une vue matérialisée stocke le résultat d'une requête. Les requêtes compatibles sont réécrites automatiquement pour la lire, sans modification de votre SQL.
Vue matérialisée asynchrone
Recalculée selon un déclencheur : à la demande, à intervalle régulier ou à chaque chargement de la table source. Elle peut joindre plusieurs tables.
CREATE MATERIALIZED VIEW analytics.mv_ventes_jour
BUILD IMMEDIATE
REFRESH AUTO ON SCHEDULE EVERY 1 HOUR
DISTRIBUTED BY HASH(region) BUCKETS AUTO
AS
SELECT dt, region, SUM(amount) AS total, COUNT(*) AS commandes
FROM analytics.orders
GROUP BY dt, region;
| Déclencheur | Recalcul |
|---|---|
ON MANUAL | REFRESH MATERIALIZED VIEW mv_ventes_jour AUTO; |
ON SCHEDULE EVERY 1 HOUR | À intervalle régulier |
ON COMMIT | Après chaque chargement de la table source |
REFRESH AUTO ne recalcule que les partitions modifiées quand c'est possible.
Vue matérialisée synchrone
Mise à jour en même temps que sa table, sur une seule table :
CREATE MATERIALIZED VIEW mv_ventes_region AS
SELECT region, SUM(amount) FROM analytics.orders GROUP BY region;
Vérifier l'utilisation
EXPLAIN indique si une requête lit une vue matérialisée.
Référence : CREATE MATERIALIZED VIEW (asynchrone), CREATE MATERIALIZED VIEW (synchrone), REFRESH MATERIALIZED VIEW.