sql >> Databáze >  >> RDS >> PostgreSQL

Materializovaný pohled PostgreSQL

Materializované pohledy vám umožňují fyzicky ukládat výsledky složitých dotazů a pravidelně je aktualizovat. Jsou tedy užitečné v případech, kdy potřebujete rychlý přístup k datům pro reporting a business intelligence. Zde je návod, jak vytvořit materializovaný pohled v PostgreSQL.


Pohled PostgreSQL vs. Materializované zobrazení

Materializované pohledy jsou podobné pohledům PostgreSQL, které vám umožňují ukládat dotazy SQL a volat je později. Pohled PostgreSQL však umožňuje uložit pouze SQL dotaz a ne jeho výsledek. Materializované pohledy vám umožňují fyzicky uložit výsledek dotazu a pravidelně je aktualizovat. V důsledku toho jsou materializované pohledy rychlejší než pohledy PostgreSQL.

Bonusové čtení:Jak získat poslední řádek na skupinu v PostgreSQL


Jak vytvořit materializovaný pohled v PostgreSQL

Materializovaný pohled můžete vytvořit v PostgreSQL pomocí příkazu CREATE MATERIALIZED VIEW, jak je ukázáno níže.

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

Ve výše uvedeném prohlášení musíte uvést view_name stejně jako dotaz jehož výsledek chcete uložit v materializovaném pohledu.

Nakonec můžete také zadat volbu S DATA, pokud chcete načíst data do pohledu v době jeho vytvoření. Pokud zmíníte WITH NO DATA, bude zobrazení označeno jako nečitelné a nebudete moci dotazovat data ze zobrazení, dokud do něj data nenačtete.

Bonusové čtení:Funkce vytvoření PostgreSQL


Obnovení materializovaného zobrazení PostgreSQL

Data můžete načíst do materializovaného zobrazení pomocí příkazu REFRESH MATERIALIZED VIEW, jak je znázorněno

REFRESH MATERIALIZED VIEW view_name

Výše uvedené prohlášení můžete také použít k obnovení materializovaného pohledu.

Upozorňujeme, že příkaz REFRESH MATERIALIZED VIEW uzamkne data dotazu, takže na ně nelze spouštět dotazy. Můžete se tomu vyhnout pomocí možnosti SOUČASNĚ

REFRESH MATERIALIZED VIEW CONCURRENTLY view_name

V tomto případě PostgreSQL vytvoří dočasný pohled, porovná jej s původním a provede potřebné vkládání, aktualizace a mazání. V důsledku toho je možnost CONCURRENTLY dostupná pouze pro materializované pohledy, které mají jedinečný index.

Chcete-li pravidelně automaticky obnovovat materializované zobrazení, můžete spustit OBNOVIT MATERIALIZED VIEW prostřednictvím automatického skriptu.

Bonusové čtení:Vytvořte schéma PostgreSQL


Odebrat materializovaná zobrazení

Materializované pohledy můžete odstranit pomocí příkazu DROP MATERIALIZED VIEW.

DROP MATERIALIZED VIEW view_name


Příklady materializovaného zobrazení

Podívejme se na některé příklady materializovaných pohledů.

Zde je dotaz na vytvoření materializovaného zobrazení s názvem ukázkové zobrazení

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

Ve výše uvedeném dotazu jsme zmínili možnost WITH NO DATA, takže pohled nebude obsahovat žádná data a při pokusu o dotaz zobrazí chybu.

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

Nyní aktualizujeme pohled, abychom do něj načetli data, a poté spustíme výše uvedený dotaz proti našemu pohledu.

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 můžete vidět výše, když znovu spustíme náš dotaz, dostaneme výsledek.

Doufejme, že nyní můžete snadno vytvořit materializovaný pohled na vaši databázi.

Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Zkuste to ještě dnes!

  1. MIN() vs LEAST() v MySQL:Jaký je rozdíl?

  2. Co je to vygenerovaný sloupec?

  3. Jak vrátit seznam podporovaných území v Oracle

  4. Jak skrýt dekoraci sady výsledků ve výstupu Psql