PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Материализиран изглед на PostgreSQL

Материализираните изгледи ви позволяват да съхранявате физически резултати от сложни заявки и да ги актуализирате периодично. Така че те са полезни в случаите, когато имате нужда от бърз достъп до данни за отчитане и бизнес разузнаване. Ето как да създадете материализиран изглед в PostgreSQL.


PostgreSQL изглед срещу материализиран изглед

Материализираните изгледи са подобни на изгледите на PostgreSQL, които ви позволяват да съхранявате SQL заявки, за да ги извикате по-късно. Изгледът на PostgreSQL обаче ви позволява да съхранявате само SQL заявката, но не и нейния резултат. Материализираните изгледи ви позволяват да съхранявате физически резултата от заявката и да ги актуализирате периодично. В резултат на това материализираните изгледи са по-бързи от изгледите на PostgreSQL.

Бонус за четене:Как да получите последния ред на група в PostgreSQL


Как да създадете материализиран изглед в PostgreSQL

Можете да създадете материализиран изглед в PostgreSQL, като използвате израза CREATE MATERIALIZED VIEW, както е показано по-долу.

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

В горното изявление трябва да споменете име_на изглед както и заявката чийто резултат искате да съхраните в материализирания изглед.

И накрая, можете също да посочите опция WITH DATA, ако искате да заредите данни в изгледа в момента на неговото създаване. Ако споменете БЕЗ ДАННИ, тогава изгледът ще бъде маркиран като нечетлив и няма да можете да заявявате данни от изгледа, докато не заредите данни в него.

Бонус четене:Функция за създаване на PostgreSQL


Опресняване на материализирания изглед на PostgreSQL

Можете да заредите данни в материализиран изглед, като използвате израза REFRESH MATERIALIZED VIEW, както е показано

REFRESH MATERIALIZED VIEW view_name

Можете също да използвате горното изявление, за да опресните материализирания изглед.

Моля, обърнете внимание, изразът REFRESH MATERIALIZED VIEW заключва данните на заявката, така че не можете да изпълнявате заявки към тях. Можете да го избегнете, като използвате опцията ЕКСПЛОАТАЦИЯ

REFRESH MATERIALIZED VIEW CONCURRENTLY view_name

В този случай PostgreSQL създава временен изглед, сравнява го с оригиналния и прави необходимите вмъквания, актуализации и изтривания. В резултат на това опцията ЕКСПЛОАТАЦИЯ е достъпна само за материализирани изгледи, които имат уникален индекс.

За периодично автоматично опресняване на материализирания изглед, можете да стартирате REFRESH MATERIALIZED VIEW чрез автоматизиран скрипт.

Бонус четене:PostgreSQL Създаване на схема


Премахване на материализирани изгледи

Можете да изтриете материализирани изгледи, като използвате оператор DROP MATERIALIZED VIEW.

DROP MATERIALIZED VIEW view_name


Примери за материализирани изгледи

Нека разгледаме някои примери за материализирани изгледи.

Ето заявката за създаване на материализиран изглед, наречен sample_view

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

В горната заявка споменахме опция WITH NO DATA, така че изгледът няма да има никакви данни и ще даде грешка, когато се опитаме да го запитаме.

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

Сега ще обновим изгледа, за да заредим данни в него и след това ще изпълним горната заявка срещу нашия изглед.

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

Както можете да видите по-горе, когато стартираме отново нашата заявка, получаваме резултата.

Надяваме се, че сега можете лесно да създадете материализиран изглед за вашата база данни.

Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталиране на PDO-драйвери за PostgreSQL на Mac (с помощта на Zend за eclipse)

  2. Използване на прозоречни функции в изявление за актуализиране

  3. Сравнете масивите за равенство, пренебрегвайки реда на елементите

  4. Как да изберете с помощта на клауза WITH RECURSIVE

  5. ГРЕШКА:не можах да осъществи достъп до файл “$libdir/plpython2” – ГРЕШКА:не можа да получи достъп до файл “$libdir/plpython3”