sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL materialiserad vy

Materialiserade vyer låter dig lagra resultat av komplexa frågor fysiskt och uppdatera dem regelbundet. Så de är användbara i fall där du behöver snabb dataåtkomst för rapportering och business intelligence. Så här skapar du materialiserad vy i PostgreSQL.


PostgreSQL-vy vs materialiserad vy

Materialiserade vyer liknar PostgreSQL-vyer som låter dig lagra SQL-frågor för att anropa dem senare. PostgreSQL-vyn låter dig dock endast lagra SQL-frågan och inte dess resultat. Materialiserade vyer låter dig lagra frågeresultatet fysiskt och uppdatera dem med jämna mellanrum. Som ett resultat är materialiserade vyer snabbare än PostgreSQL-vyer.

Bonus Läs:Hur man får sista raden per grupp i PostgreSQL


Hur man skapar materialiserad vy i PostgreSQL

Du kan skapa materialiserad vy i PostgreSQL med CREATE MATERIALIZED VIEW-satsen som visas nedan.

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

I ovanstående uttalande måste du nämna view_name samt frågan vars resultat du vill lagra i den materialiserade vyn.

Slutligen kan du också ange alternativet MED DATA om du vill ladda data till vyn när den skapas. Om du nämner WITH NO DATA, kommer vyn att flaggas som oläslig och du kommer inte att kunna söka efter data från vyn förrän du laddar in data i den.

Bonus Läs:PostgreSQL Skapa funktion


PostgreSQL Materialized View Refresh

Du kan ladda data till materialiserad vy med REFRESH MATERIALIZED VIEW-satsen som visas

REFRESH MATERIALIZED VIEW view_name

Du kan också använda ovanstående uttalande för att uppdatera materialiserad vy.

Observera att REFRESH MATERIALIZED VIEW-satsen låser frågedata så att du inte kan köra frågor mot den. Du kan undvika det med alternativet CONCURRENTLY

REFRESH MATERIALIZED VIEW CONCURRENTLY view_name

I det här fallet skapar PostgreSQL en tillfällig vy, jämför den med den ursprungliga och gör nödvändiga insättningar, uppdateringar och borttagningar. Som ett resultat är alternativet SAMTIDIGT endast tillgängligt för materialiserade vyer som har ett unikt index.

För att automatiskt uppdatera materialiserad vy med jämna mellanrum kan du köra REFRESH MATERIALIZED VIEW via ett automatiskt skript.

Bonus Läs:PostgreSQL Skapa Schema


Ta bort materialiserade vyer

Du kan ta bort materialiserade vyer med DROP MATERIALIZED VIEW-satsen.

DROP MATERIALIZED VIEW view_name


Exempel på materialiserade vyer

Låt oss titta på några materialiserade exempel.

Här är frågan för att skapa en materialiserad vy som heter sample_view

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

I ovanstående fråga har vi nämnt alternativet UTAN DATA så vyn kommer inte att ha några data och kommer att ge ett felmeddelande när vi försöker fråga den.

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

Nu kommer vi att uppdatera vyn för att ladda data i den och sedan köra ovanstående fråga mot vår vy.

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

Som du kan se ovan får vi resultatet när vi kör vår fråga igen.

Förhoppningsvis kan du nu enkelt skapa materialiserad vy för din databas.

Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Hur aktiverar jag MSDTC på SQL Server?

  2. Vad är @@MAX_PRECISION i SQL Server?

  3. Det gick inte att byta namn på en kolumn i MySQL

  4. Hur man uppdaterar/tar bort med element från två olika tabeller SQLite