Unterschied zwischen Ansicht und materialisierter Ansicht

Anonim

Ansicht vs Materialisierte Ansicht

select * from viewname

View

Wie bereits erwähnt, ist view eine virtuelle Tabelle, die eine ausgewählte Abfrage ausblendet. Diese ausgewählten Abfragen werden nicht vorab ausgeführt. Wenn wir eine SELECT-Anweisung aus einer Sicht ausführen, führt sie die Select-Anweisung aus, die sich im Sichttext befindet. Nehmen wir an, die select-Anweisung des View-Körpers sei eine sehr komplexe Anweisung. Wenn es ausgeführt wird, dauert es etwas Zeit (relativ mehr Zeit). Darüber hinaus verwendet die Ansicht sehr wenig Platz, um sich zu speichern. Das ist, weil es nur eine select-Anweisung als Inhalt hat.

Materialisierte Ansicht (Mview)

Dies ist eine spezielle Art der Ansicht. Mviews werden erstellt, wenn bei Sichten Leistungsprobleme auftreten. Wenn wir eine mview erstellen, führt sie ihre select-Abfrage aus und speichert ihre Ausgabe als Snapshot-Tabelle. Wenn wir Daten von Mview anfordern, muss es seine Select-Anweisung nicht erneut ausführen. Es gibt die Ausgabe aus seiner Snapshot-Tabelle. Daher ist die Ausführungszeit von mview geringer als die Ansicht (für dieselbe select-Anweisung). Mviews kann jedoch nicht immer verwendet werden, da es die gleiche Ausgabe zeigt, die als Snapshot-Tabelle gespeichert ist. Wir sollten das mview aktualisieren, um das neueste Ergebnis zu erhalten.

Was ist der Unterschied zwischen View und Mview ?

1. Mview speichert seine Ausgabe immer als Snapshot-Tabelle, wenn sie erstellt wird. Die Ansicht erstellt jedoch keine Tabellen.

2. View benötigt keinen großen Speicherplatz, um seinen Inhalt zu speichern, aber mview benötigt relativ viel Speicherplatz als eine View, um den Inhalt zu speichern (als Snapshot-Tabelle).

3. View nimmt eine größere Ausführungszeit in Anspruch, aber Mview benötigt eine kürzere Ausführungszeit als Sichten (für dieselbe SELECT-Anweisung).

4. Mviews müssen aktualisiert werden, um die neuesten Daten zu erhalten, aber Ansichten geben immer die neuesten Daten an.

5. Das Schema benötigt "create materialized view" Privileg, um mviews zu erstellen, und für Ansichten benötigt es "create view" Privileg.

6. In mviews können Indizes erstellt werden, um mehr Leistung zu erzielen. Indizes können jedoch nicht in Ansichten erstellt werden.