Widoki w PostgreSQL to graficzne tabele, które wyświetlają dane z odpowiednich tabel. Można również modyfikować wspólne widoki. PostgreSQL przenosi koncepcję widoków do następnego etapu, umożliwiając widokom przechowywanie informacji w sposób materialny, zwanych widokami zmaterializowanymi. Zmaterializowany widok zachowuje dane wyjściowe czasochłonnego, skomplikowanego zapytania, umożliwiając szybkie zapytanie o wyniki w dowolnym momencie. Zmaterializowane punkty widzenia są często używane w hurtowniach danych i aplikacjach Business Intelligence, ponieważ są pomocne w sytuacjach wymagających szybkiego dostępu do danych.
Dlaczego warto korzystać z widoków zmaterializowanych?
Jeśli polecenie widoku jest dla Ciebie zbyt powolne, możesz użyć widoku zmaterializowanego. Widoki zmaterializowane cechują się dużą wszechstronnością, umożliwiając zachowanie reprezentacji w materiale w bazie danych przy krótszych czasach dostępu. Załóżmy, że musisz utworzyć zapytanie do bazy danych, aby połączyć kilka tabel, usunąć wiersze z połączonej kolekcji i posortować tabele na różne sposoby. Może to być skomplikowane i czasochłonne zapytanie, a bez widoków zmaterializowanych będziesz korzystać z widoku zmaterializowanego, aby rozwiązać ten dylemat. Z tego artykułu dowiesz się, jak używać widoków zmaterializowanych w PostgreSQL.
Składnia
>> CREATE MATERIALIZED VIEW view_name AS zapytanie Z [NIE] DANYMI;Wyjaśnienie tego ogólnego poglądu jest następujące:
- Nazwa_widoku: Tytuł widoku, który ma zostać utworzony za pomocą instrukcji CREATE MATERIALIZED VIEW.
- Pytanie: Zapytanie, które uzyskuje dane z odpowiednich tabel.
- Z [NIE] DANYMI: wybierz opcję Z DANYMI, aby włączyć dane informacyjne do zmaterializowanego widoku w czasie opracowywania; w przeciwnym razie wybierz BEZ DANYCH. Widok jest oznaczony jako niezrozumiały, jeśli użyjesz opcji Z [NIE] DANYMI, co oznacza, że nie będziesz mógł wyszukiwać informacji z widoku, chyba że wcześniej wczytałeś do niego dane.
Jak korzystać z widoków zmaterializowanych
Uruchom powłokę wiersza poleceń PostgreSQL, aby rozpocząć pracę nad widokami zmaterializowanymi.
Podaj nazwę serwera, bazę danych, na której chcesz pracować, numer portu i nazwę użytkownika, aby rozpocząć korzystanie z powłoki poleceń. Zostaw te miejsca puste, jeśli chcesz użyć domyślnego systemu.
Przykład 1: Widok prosty
Aby zrozumieć zmaterializowany pogląd, musisz najpierw zrozumieć proste poglądy. Tak więc utwórz nową tabelę „Student” za pomocą polecenia CREATE TABLE, jak dołączono.
>> CREATE TABLE Student (sid serial PRIMARY KEY, sname VARCHAR(100) NOT NULL, wiek VARCHAR(100) NOT NULL);
Następnie wstaw do niego dane za pomocą zapytania INSERT.
Pobierz rekordy tabeli „Student” za pomocą instrukcji SELECT dla prostego widoku.
>> WYBIERZ * OD Studenta;
Przykład 2: Prosty zmaterializowany widok
Teraz nadszedł czas, aby omówić zmaterializowany pogląd. Użyjemy tabeli „Student”, aby stworzyć zmaterializowany widok. Stworzymy zmaterializowany widok o nazwie 'std_view' za pomocą polecenia 'CREATE MATERIALIZED VIEW'. W tym widoku pobierzemy pole imienia ucznia 'sname' z tabeli 'Student', pogrupowane i posortowane w porządku rosnącym w kolumnie 'sname'.
>> CREATE MATERIALIZED VIEW std_view AS SELECT sname Z GRUPY UCZNIÓW BY sname ORDER BY sname;
Teraz, używając zapytania SELECT do wykonania widoku, zwrócimy nazwiska uczniów w kolumnie 'nazwisko' tabeli 'Student'.
>> WYBIERZ * Z std_view;
Przykład 3: Widok zmaterializowany przy użyciu klauzuli WHERE
Teraz utworzymy zmaterializowany widok za pomocą klauzuli WHERE. Rozważ poniższą tabelę „Student” z pewnymi zmianami jej wartości.
Następnie utworzymy zmaterializowany widok o nazwie „teststd” za pomocą zapytania „CREATE MATERIALIZED VIEW”. Za pomocą klauzuli WHERE wybierzemy rekordy tabeli „Student”, w których wartość kolumny „wiek” jest większa niż „25”. Zapytanie działa poprawnie, jak widać na zdjęciu.
>> CREATE MATERIALIZED VIEW teststd AS SELECT sid, sname, wiek FROM Student WHERE wiek > '25';
Na koniec wykonamy zmaterializowany widok, który właśnie stworzyliśmy za pomocą polecenia SELECT, jak poniżej. Zobaczysz, że zwróci wszystkie rekordy z tabeli „Student”, w której kolumna „wiek” ma wartość większą niż „25.'
>> WYBIERZ * Z testówstd;
Przykład 4: Odśwież widok zmaterializowany za pomocą klauzuli BEZ DANYCH
W tym przykładzie stworzymy widok zmaterializowany, w którym do odświeżenia widoku użyjemy klauzuli WITH NO DATA. Załóżmy, że poniższa tabela „Ucznia” z pewnymi zmianami w jej wartościach.
Utworzymy teraz zmaterializowany widok „teststd”. Ten widok wybierze rekordy z tabeli „student”, w której wiek uczniów jest mniejszy niż „40”.' Pobrane rekordy zostaną pogrupowane i posortowane w porządku rosnącym w kolumnie 'sid'. Na końcu zapytania użyjemy klauzuli WITH NO DATA, aby wskazać, że zapytanie nie zapisze żadnych informacji w widoku zmaterializowanym. Widok pokazany poniżej powinien z powodzeniem wykonać te czynności.
>> CREATE MATERIALIZED VIEW teststd AS SELECT sid, sname, age FROM Student WHERE wiek < '40' GROUP BY sid ORDER BY sid WITH NO DATA;
Po dodaniu klauzuli „BEZ DANYCH” do zmaterializowanego widoku tworzy się pusta. Ten zmaterializowany widok nie podlega zapytaniom. Jak widać na poniższym obrazku, nie pobiera rekordów w nowo utworzonym widoku.
Instrukcja REFRESH MATERIALIZED VIEW służy do importowania danych do zmaterializowanego widoku. Wypełnij widok zmaterializowany, uruchamiając w powłoce następujące zapytanie REFRESH MATERIALIZED VIEW. Jak widać, to zapytanie zadziałało skutecznie.
>> ODŚWIEŻ ZMATERIALIZOWANY WIDOK teststd;
Ponownie pobierz rekordy zmaterializowanego widoku „teststd” za pomocą instrukcji SELECT w powłoce. Tym razem zapytanie SELECT działa poprawnie, ponieważ instrukcja 'REFRESH' załadowała zawartość do widoku zmaterializowanego.
Przykład 5: Upuść zmaterializowany widok
Następujące polecenie usunie widok zmaterializowany.
>> UPUŚĆ ZMATERIALIZOWANY WIDOK std_view;
Wniosek
W tym artykule pokazano, jak używać widoków zmaterializowanych za pomocą klauzuli WHERE i zapytań REFRESH w powłoce wiersza poleceń.