Jasne.
Widok normalny to zapytanie, które definiuje wirtualną tabelę — w rzeczywistości nie masz danych w tabeli, tworzysz je w locie, wykonując.
Widok zmaterializowany to widok, w którym uruchamiane jest zapytanie, a dane zapisywane w rzeczywistej tabeli.
Dane w zmaterializowanym widoku są odświeżane, gdy im to powiesz.
Kilka przypadków użycia:
-
Mamy wiele instancji Oracle, w których chcemy mieć dane podstawowe w jednej instancji oraz w miarę aktualną kopię danych w innych instancjach. Nie chcemy zakładać, że łącza do bazy danych między nimi będą zawsze działały. Dlatego konfigurujemy zmaterializowane widoki innych instancji z zapytaniami takimi jak
select a,b,c from [email protected]
i powiedz im, żeby codziennie się odświeżali. -
Widoki zmaterializowane są również przydatne podczas przepisywania zapytań. Załóżmy, że masz w hurtowni danych tabelę faktów zawierającą każdą książkę wypożyczoną kiedykolwiek z biblioteki, z datami i osobami wypożyczającymi. A ten personel regularnie chce wiedzieć, ile razy książka została wypożyczona. Następnie zbuduj zmaterializowany widok jako
select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name
, ustaw ją na dowolną częstotliwość aktualizacji — zwykle częstotliwość aktualizacji dla samej hurtowni. Teraz, jeśli ktoś uruchomi zapytanie w ten sposób dla konkretnej książki względembook_trans
tabeli, funkcja przepisywania zapytań w Oracle będzie wystarczająco inteligentna, aby spojrzeć na zmaterializowany widok, zamiast przechodzić przez miliony wierszy wbook_trans
.
Zazwyczaj tworzysz zmaterializowane widoki ze względu na wydajność i stabilność — niestabilne sieci lub długie zapytania poza godzinami pracy.