PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Vue matérialisée PostgreSQL

Les vues matérialisées vous permettent de stocker physiquement les résultats de requêtes complexes et de les mettre à jour périodiquement. Ils sont donc utiles dans les cas où vous avez besoin d'un accès rapide aux données pour le reporting et l'informatique décisionnelle. Voici comment créer une vue matérialisée dans PostgreSQL.


Vue PostgreSQL vs vue matérialisée

Les vues matérialisées sont similaires aux vues PostgreSQL qui vous permettent de stocker des requêtes SQL pour les appeler plus tard. Cependant, la vue PostgreSQL vous permet de stocker uniquement la requête SQL et non son résultat. Les vues matérialisées vous permettent de stocker physiquement le résultat de la requête et de le mettre à jour périodiquement. Par conséquent, les vues matérialisées sont plus rapides que les vues PostgreSQL.

Lecture bonus :comment obtenir la dernière ligne par groupe dans PostgreSQL


Comment créer une vue matérialisée dans PostgreSQL

Vous pouvez créer une vue matérialisée dans PostgreSQL en utilisant l'instruction CREATE MATERIALIZED VIEW comme indiqué ci-dessous.

CREATE MATERIALIZED VIEW view_name
AS query 
WITH [NO] DATA;

Dans la déclaration ci-dessus, vous devez mentionner view_name ainsi que la requête dont vous souhaitez stocker le résultat dans la vue matérialisée.

Enfin, vous pouvez également spécifier l'option WITH DATA si vous souhaitez charger des données dans la vue au moment de sa création. Si vous mentionnez SANS DONNÉES, la vue sera signalée comme illisible et vous ne pourrez pas interroger les données de la vue tant que vous n'y aurez pas chargé les données.

Lecture bonus :fonction de création PostgreSQL


Actualisation de la vue matérialisée PostgreSQL

Vous pouvez charger des données dans une vue matérialisée à l'aide de l'instruction REFRESH MATERIALIZED VIEW comme indiqué

REFRESH MATERIALIZED VIEW view_name

Vous pouvez également utiliser l'instruction ci-dessus pour actualiser la vue matérialisée.

Veuillez noter que l'instruction REFRESH MATERIALIZED VIEW verrouille les données de la requête afin que vous ne puissiez pas exécuter de requêtes dessus. Vous pouvez l'éviter en utilisant l'option CONCURRENTLY

REFRESH MATERIALIZED VIEW CONCURRENTLY view_name

Dans ce cas, PostgreSQL crée une vue temporaire, la compare avec la vue d'origine et effectue les insertions, mises à jour et suppressions nécessaires. Par conséquent, l'option CONCURRENTLY n'est disponible que pour les vues matérialisées qui ont un index unique.

Pour actualiser automatiquement la vue matérialisée périodiquement, vous pouvez exécuter REFRESH MATERIALIZED VIEW via un script automatisé.

Lecture bonus :Créer un schéma PostgreSQL


Supprimer les vues matérialisées

Vous pouvez supprimer des vues matérialisées à l'aide de l'instruction DROP MATERIALIZED VIEW.

DROP MATERIALIZED VIEW view_name


Exemples de vues matérialisées

Examinons quelques exemples de vues matérialisées.

Voici la requête pour créer une vue matérialisée appelée sample_view

postgres=# create materialized view sample_view
           as select * from sales
           with no data;

Dans la requête ci-dessus, nous avons mentionné l'option SANS DONNÉES afin que la vue ne contienne aucune donnée et génère une erreur lorsque nous essayons de l'interroger.

postgres=# select * from sample_view;
ERROR: materialized view "sample_view" has not been populated
HINT: Use the REFRESH MATERIALIZED VIEW command.

Nous allons maintenant actualiser la vue pour y charger des données, puis exécuter la requête ci-dessus sur notre vue.

postgres=# refresh materialized view sample_view;
REFRESH MATERIALIZED VIEW

postgres=# select * from sample_view;
order_date | sale
------------+------
2020-04-01 | 210
2020-04-02 | 125
2020-04-03 | 150
2020-04-04 | 230
2020-04-05 | 200
2020-04-10 | 220
2020-04-06 | 250
2020-04-07 | 215
2020-04-08 | 300
2020-04-09 | 250

Comme vous pouvez le voir ci-dessus, lorsque nous exécutons à nouveau notre requête, nous obtenons le résultat.

J'espère que vous pouvez maintenant créer facilement une vue matérialisée pour votre base de données.

Ubiq permet de visualiser facilement les données en quelques minutes et de les surveiller dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !