Разбира се.
Нормалният изглед е заявка, която дефинира виртуална таблица -- всъщност нямате данните в таблицата, създавате ги в движение чрез изпълнение.
Материализираният изглед е изглед, при който заявката се изпълнява и данните се записват в действителна таблица.
Данните в материализирания изглед се опресняват, когато му кажете.
Няколко случая на употреба:
-
Имаме множество екземпляри на Oracle, където искаме да имаме главните данни в един екземпляр и сравнително актуално копие на данните в другите екземпляри. Не искаме да предполагаме, че връзките към базата данни между тях винаги ще работят. Затова настроихме материализирани изгледи на другите екземпляри със заявки като
select a,b,c from [email protected]
и им кажете да опресняват всеки ден. -
Материализираните изгледи също са полезни при пренаписване на заявки. Да приемем, че имате таблица с факти в хранилище на данни с всяка книга, заета някога от библиотека, с дати и заематели. И този персонал редовно иска да знае колко пъти е била заета книга. След това изградете материализиран изглед като
select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name
, задайте каквато искате честота на актуализиране -- обикновено честотата на актуализиране за самия склад. Сега, ако някой изпълни подобна заявка за конкретна книга срещуbook_trans
таблица, способността за пренаписване на заявка в Oracle ще бъде достатъчно интелигентна, за да разгледа материализирания изглед, вместо да се разхожда през милионите редове вbook_trans
.
Обикновено изграждате материализирани изгледи от съображения за производителност и стабилност - нестабилни мрежи или извършване на дълги заявки извън работно време.