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!