Zeker.
Een normale weergave is een query die een virtuele tabel definieert - u heeft de gegevens niet echt in de tabel, u maakt deze direct door deze uit te voeren.
Een gerealiseerde weergave is een weergave waarin de query wordt uitgevoerd en de gegevens worden opgeslagen in een werkelijke tabel.
De gegevens in de gerealiseerde weergave worden vernieuwd wanneer u dit opdraagt.
Een paar gebruiksscenario's:
-
We hebben meerdere Oracle-instanties waarvan we de mastergegevens op één instantie willen hebben en een redelijk actuele kopie van de gegevens op de andere instanties. We willen er niet van uitgaan dat de databasekoppelingen ertussen altijd actief zullen zijn. Dus hebben we gematerialiseerde weergaven opgezet voor de andere instanties, met zoekopdrachten zoals
select a,b,c from [email protected]
en vertel ze dat ze dagelijks moeten vernieuwen. -
Gematerialiseerde weergaven zijn ook nuttig bij het herschrijven van query's. Stel dat u een feitentabel in een datawarehouse heeft met elk boek dat ooit uit een bibliotheek is geleend, met datums en leners. En dat personeel regelmatig wil weten hoe vaak een boek is uitgeleend. Bouw vervolgens een gematerialiseerde weergave als
select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name
, stel het in voor elke gewenste updatefrequentie - meestal de updatefrequentie voor het magazijn zelf. Als iemand nu zo'n query uitvoert voor een bepaald boek tegen debook_trans
tabel, zal de herschrijfmogelijkheid voor query's in Oracle slim genoeg zijn om naar de gematerialiseerde weergave te kijken in plaats van door de miljoenen rijen inbook_trans
te lopen .
Gewoonlijk bouw je gematerialiseerde weergaven om prestatie- en stabiliteitsredenen - schilferige netwerken of lange query's buiten kantooruren.