Pohledy v PostgreSQL jsou grafické tabulky, které zobrazují data z odpovídajících tabulek. Společná zobrazení lze také upravit. PostgreSQL posouvá koncept pohledů do další fáze tím, že umožňuje pohledům materiálně ukládat informace, označované jako zhmotněné pohledy. Zhmotněné zobrazení zachovává výstup časově náročného a komplikovaného dotazu a umožňuje vám kdykoli rychle dotazovat výsledky. V datových skladech a aplikacích business intelligence se často používají materializovaná hlediska, protože jsou užitečná v situacích, které vyžadují rychlý přístup k datům.
Proč používat materializované pohledy?
Pokud je příkaz view pro vás příliš pomalý, můžete raději použít materializované zobrazení. Zhmotněné pohledy mají mnoho univerzálnosti, protože vám umožňují uchovat si reprezentaci v databázi s kratšími časy přístupu. Předpokládejme, že jste povinni vytvořit databázový dotaz, abyste se připojili k několika tabulkám, odebrali řádky z sjednocené kolekce a třídili tabulky různými způsoby. Může to být komplikovaný a časově náročný dotaz a bez zhmotněných pohledů skončíte s využitím tohoto zhmotnění při řešení tohoto dilematu. Tento článek vás naučí, jak používat materializovaná zobrazení v PostgreSQL.
Syntax
>> VYTVOŘIT MATERIALIZOVANÝ ZOBRAZENÍ view_name JAKO dotaz S [NE] ÚDAJI;Vysvětlení tohoto obecného pohledu je následující:
- Název_zobrazení: Název pohledu, který má být vytvořen pomocí příkazu CREATE MATERIALIZED VIEW.
- Dotaz: Dotaz, který získává data z odpovídajících tabulek.
- S [NE] ÚDAJI: vyberte možnost S DATAMI a začleňte informační data do materializovaného pohledu v době vývoje; jinak zvolte BEZ DAT. Pohled je označen jako nepochopitelný, pokud použijete možnost S [NE] DATY, což znamená, že nebudete moci vyhledávat informace z pohledu, pokud do něj nejprve nenačtete data.
Jak používat materializovaná zobrazení
Spusťte prostředí příkazového řádku PostgreSQL a začněte pracovat na zhmotněných pohledech.
Chcete-li začít používat příkazový shell, zadejte název serveru, databázi, na které chcete pracovat, číslo portu a uživatelské jméno. Pokud chcete použít výchozí systém, ponechte tyto mezery prázdné.
Příklad 1: Jednoduché zobrazení
Abyste porozuměli materializovanému pohledu, musíte nejprve porozumět jednoduchým pohledům. Vytvořte tedy novou tabulku „Student“ pomocí příkazu CREATE TABLE, jak je přiložen.
>> CREATE TABLE Student (sid serial PRIMARY KEY, sname VARCHAR (100) NOT NULL, age VARCHAR (100) NOT NULL);
Poté do něj vložte data pomocí dotazu INSERT.
Načtěte záznamy tabulky „Student“ pomocí příkazu SELECT pro jednoduché zobrazení.
>> SELECT * FROM Student;
Příklad 2: Jednoduchý materializovaný pohled
Nyní je čas pokrýt materializované zobrazení. K vytvoření materializovaného pohledu použijeme tabulku „Student“. Vytvoříme materializovaný pohled s názvem 'std_view' pomocí příkazu 'CREATE MATERIALIZED VIEW'. V tomto zobrazení načteme pole se jménem studenta „sname“ z tabulky „Student“, seskupené a seřazené vzestupně ve sloupci „sname“.
>> VYTVOŘTE MATERIALIZOVANÝ ZOBRAZ std_view JAKO VYBRAT sname ZE SKUPINY PODLE sname OBJEDNAT BY sname;
Nyní pomocí dotazu SELECT k provedení zobrazení vrátíme jména studentů ve sloupci „sname“ tabulky „Student“.
>> SELECT * FROM std_view;
Příklad 3: Zhmotněné zobrazení pomocí klauzule WHERE
Nyní vytvoříme materializované zobrazení pomocí klauzule WHERE. Zvažte následující tabulku „Student“ s některými změnami jejích hodnot.
Poté vytvoříme materializovaný pohled s názvem 'teststd' pomocí dotazu 'CREATE MATERIALIZED VIEW'. Pomocí klauzule WHERE vybereme záznamy tabulky „Student“, kde je hodnota sloupce „age“ větší než „25“. Dotaz funguje správně, jak je vidět na obrázku.
>> VYTVOŘTE MATERIALIZOVANÝ ZOBRAZENÍ teststd JAKO VYBRAT sid, sname, age FROM Student WHERE age> '25';
Nakonec provedeme materializované zobrazení, které jsme právě vytvořili pomocí příkazu SELECT, jak je uvedeno níže. Uvidíte, že vrátí všechny záznamy z tabulky „Student“, ve které má sloupec „age“ hodnotu větší než „25.''
>> SELECT * FROM teststd;
Příklad 4: Obnovit zhmotněné zobrazení pomocí klauzule WITH NO DATA
V tomto příkladu vytvoříme materializované zobrazení, ve kterém použijeme klauzuli WITH NO DATA k obnovení zobrazení. Předpokládejme, že následující tabulka 'Student' s některými změnami v jejích hodnotách.
Nyní vytvoříme materializované zobrazení „teststd“. Toto zobrazení vybere záznamy z tabulky „student“, ve kterých je věk studentů nižší než 40 let.„Načtené záznamy budou seskupeny a seřazeny podle vzestupného pořadí ve sloupci„ sid “. Na konci dotazu použijeme klauzuli WITH NO DATA k označení, že dotaz neuloží žádné informace v materializovaném zobrazení. Pohled zobrazený níže by měl tyto akce úspěšně provést.
>> VYTVOŘTE MATERIALIZOVANÝ ZOBRAZENÍ teststd JAKO VYBRAT sid, sname, věk OD studenta KDE věk < '40' GROUP BY sid ORDER BY sid WITH NO DATA;
Když do zhmotněného pohledu přidáte klauzuli „S BEZ DAT“, vytvoří se prázdná. Toto zhmotněné zobrazení nelze zpochybnit. Jak můžete vidět na následujícím obrázku, není načítání záznamů v nově vytvořeném zobrazení.
Příkaz REFRESH MATERIALIZED VIEW se používá k importu dat do materializovaného pohledu. Vyplňte materializované zobrazení spuštěním následujícího dotazu REFRESH MATERIALIZED VIEW v prostředí. Jak vidíte, tento dotaz fungoval efektivně.
>> REFRESH MATERIALIZED VIEW teststd;
Opět načtěte záznamy materializovaného pohledu 'teststd' pomocí příkazu SELECT v shellu. Tentokrát výběrový dotaz funguje správně, protože příkaz 'REFRESH' načetl obsah do materializovaného zobrazení.
Příklad 5: Drop materializované zobrazení
Následující příkaz odstraní materializované zobrazení.
>> DROP MATERIALIZOVANÝ ZOBRAZENÍ std_view;
Závěr
Tento článek vám ukázal, jak používat materializovaná zobrazení pomocí klauzule WHERE a dotazů REFRESH v prostředí příkazového řádku.