PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zmaterializowany widok PostgreSQL

Zmaterializowane widoki umożliwiają fizyczne przechowywanie wyników złożonych zapytań i ich okresową aktualizację. Są więc przydatne w przypadkach, w których potrzebny jest szybki dostęp do danych do raportowania i analizy biznesowej. Oto jak stworzyć zmaterializowany widok w PostgreSQL.


Widok PostgreSQL a widok zmaterializowany

Widoki zmaterializowane są podobne do widoków PostgreSQL, które umożliwiają przechowywanie zapytań SQL w celu ich późniejszego wywołania. Jednak widok PostgreSQL pozwala na przechowywanie tylko zapytania SQL, a nie jego wyniku. Widoki zmaterializowane umożliwiają fizyczne przechowywanie wyników zapytania i okresowe ich aktualizowanie. W rezultacie widoki zmaterializowane są szybsze niż widoki PostgreSQL.

Przeczytaj bonus:Jak uzyskać ostatni rząd na grupę w PostgreSQL


Jak stworzyć zmaterializowany widok w PostgreSQL

Możesz utworzyć zmaterializowany widok w PostgreSQL za pomocą instrukcji CREATE MATERIALIZED VIEW, jak pokazano poniżej.

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

W powyższym oświadczeniu musisz wspomnieć o nazwa_widoku jak również zapytanie którego wynik chcesz zapisać w zmaterializowanym widoku.

Na koniec możesz również określić opcję Z DANYMI, jeśli chcesz załadować dane do widoku w momencie jego tworzenia. Jeśli wspomnisz BEZ DANYCH, widok zostanie oznaczony jako nieczytelny i nie będziesz mógł wyszukiwać danych z widoku, dopóki nie załadujesz do niego danych.

Przeczytaj bonus:Funkcja tworzenia PostgreSQL


Odświeżenie zmaterializowanego widoku PostgreSQL

Możesz załadować dane do widoku zmaterializowanego za pomocą instrukcji REFRESH MATERIALIZED VIEW, jak pokazano

REFRESH MATERIALIZED VIEW view_name

Możesz również użyć powyższej instrukcji, aby odświeżyć widok zmaterializowany.

Należy pamiętać, że instrukcja REFRESH MATERIALIZED VIEW blokuje dane zapytania, więc nie można uruchamiać zapytań względem niego. Możesz tego uniknąć, korzystając z opcji JEDNOCZEŚNIE

REFRESH MATERIALIZED VIEW CONCURRENTLY view_name

W takim przypadku PostgreSQL tworzy widok tymczasowy, porównuje go z oryginalnym i dokonuje niezbędnych wstawek, aktualizacji i usunięć. W rezultacie opcja JEDNOCZEŚNIE jest dostępna tylko dla zmaterializowanych widoków, które mają unikalny indeks.

Aby okresowo automatycznie odświeżać widok zmaterializowany, możesz uruchomić ODŚWIEŻ WIDOK ZMATERIALIZOWANY za pomocą automatycznego skryptu.

Przeczytaj bonus:Schemat tworzenia PostgreSQL


Usuń zmaterializowane widoki

Możesz usunąć zmaterializowane widoki za pomocą instrukcji DROP MATERIALIZED VIEW.

DROP MATERIALIZED VIEW view_name


Przykłady zmaterializowanych widoków

Przyjrzyjmy się kilku przykładom zmaterializowanych widoków.

Oto zapytanie umożliwiające utworzenie zmaterializowanego widoku o nazwie sample_view

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

W powyższym zapytaniu wspomnieliśmy o opcji BEZ DANYCH, więc widok nie będzie zawierał żadnych danych i wyświetli błąd, gdy spróbujemy go zapytać.

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

Teraz odświeżymy widok, aby załadować do niego dane, a następnie uruchomimy powyższe zapytanie względem naszego widoku.

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

Jak widać powyżej, po ponownym uruchomieniu zapytania otrzymujemy wynik.

Mamy nadzieję, że teraz możesz łatwo utworzyć zmaterializowany widok swojej bazy danych.

Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połącz zapytania z zagnieżdżoną pętlą z wynikiem tablicy nadrzędnej — pg-promise

  2. Jak działa Z WYJĄTKIEM w PostgreSQL

  3. Domyślna lokalizacja bazy danych PostgreSQL w systemie Linux

  4. Zapytanie, które ignoruje spacje

  5. java.lang.ClassNotFoundException:org.postgresql.Driver, Android