Frage

Ich werde ein DW entwerfen, und ich hörte über materialisierte Ansichten. Eigentlich möchte ich eine Ansicht erstellen und es sollte automatisch aktualisiert, wenn Basistabellen geändert werden. Kann jemand mit einer Abfrage Beispiel erklären ..

War es hilfreich?

Lösung

Sie heißen indizierte Sichten in SQL Server - lesen Sie diese Whitepaper für mehr Hintergrund:

Im Grunde alles, was Sie tun müssen, ist:

  • erstellen eine regelmäßige Ansicht
  • Erstellen Sie einen gruppierten Index für diese Ansicht

und Sie sind fertig!

Der schwierige Teil ist: der Blick eine ganze Reihe von Auflagen und Beschränkungen zu erfüllen hat - die sind in dem weißen Papier skizziert. Wenn Sie dies tun - das ist alles da ist. Die Ansicht wird automatisch aktualisiert, keine Wartung erforderlich.

Weitere Informationen:

Andere Tipps

Obwohl rein aus technischer Sicht, indizierte Sichten wie etwas, das jeder klingen könnte verwenden, um Leistung zu verbessern, aber das wirkliche Leben Szenario ist sehr unterschiedlich. Ich habe nicht erfolgreich gewesen verwendet indiziert Sichten, wo ich am meisten benötigen sie wegen zu vielen Beschränkungen auf, was indiziert werden kann und was nicht.

Wenn Sie in den Ansichten Outer-Joins haben, können sie nicht verwendet werden. Außerdem sind allgemeine Tabellenausdrücke nicht erlaubt ... In der Tat, wenn Sie eine Bestellung in Subselects oder abgeleitete Tabellen haben (wie zum Beispiel mit Partition durch Klausel), Sie sind zu Glück aus.

Das lässt nur sehr einfache Szenarien indizierte Sichten zu nutzen, etwas meiner Meinung nach kann ohnehin durch die Schaffung von richtigen Indizes für zugrunde liegenden Tabellen optimiert werden.

werde ich begeistert sein, einige realen Situationen zu hören, wo die Menschen tatsächlich indizierte Sichten zu ihrem Vorteil genutzt haben und ohne sie nicht hätte tun können,

Sie könnten ein wenig mehr Hintergrund benötigen, was eine materialisierte Ansicht tatsächlich ist. In Oracle ist diese ein Objekt, das aus einer Reihe von Elementen besteht, wenn Sie versuchen, es an anderer Stelle zu bauen.

Ein MVIEW ist im Wesentlichen eine Momentaufnahme der Daten aus einer anderen Quelle. Im Gegensatz zu einer Ansicht wird die Daten nicht gefunden, wenn Sie abfragen, um die Ansicht lokal in Form einer Tabelle gespeichert ist. Die MVIEW wird aufgefrischt ein Hintergrundverfahren, dass Kicks off in regelmäßigen Abständen verwendet oder wenn die Quelldaten ändern. Oracle ermöglicht eine vollständige oder teilweise aktualisiert.

In SQL Server, würde ich die Verwendung im Anschluss an eine grundlegende MVIEW zu (komplett) erstellen aktualisiere regelmäßig.

Als erstes wird eine Ansicht. Dies sollte für die meisten einfach sein, da Ansichten in einer Datenbank durchaus üblich sind Als nächstes wird eine Tabelle. Dies sollte zu der Ansicht, die in Spalten und Daten identisch sein. Dies wird eine Momentaufnahme der Ansicht Daten speichern. Dann wird ein Verfahren, das die Tabelle abschneidet und Reloads es auf den aktuellen Daten in der Ansicht basieren. Schließlich ist ein Job, der das Verfahren löst es die Arbeit zu beginnen.

Alles andere ist Experimentieren.

Wenn indizierte Sicht nicht möglich ist, und schnelle Updates sind nicht erforderlich, können Sie eine Hack-Cache-Tabelle erstellen:

select * into cachetablename from myviewname
alter table cachetablename add primary key (columns)
-- OR alter table cachetablename add rid bigint identity primary key
create index...

dann sp_rename View / Tabelle oder alle Fragen ändern oder andere Ansichten, die sie verweisen auf die Cache-Tabelle verweisen.

Zeitplan täglich / nächtlich / wöchentlich / Dingsbums refresh wie

begin transaction
truncate table cachetablename
insert into cachetablename select * from viewname
commit transaction

Hinweis: dieser Raum essen, auch in Ihrem tx Protokoll. Am besten für kleinen Datensätze verwendet, die langsam zu berechnen. Vielleicht refactor „einfach, aber groß“ Spalten zuerst in eine äußere Ansicht zu beseitigen.

Für MS T-SQL-Server, schlage ich vor, einen Blick in einen Index mit der "include" Erklärung zu schaffen. Einmaligkeit nicht erforderlich ist, weder die physikalische Sortierung von Daten mit einem gruppierten Index zugeordnet ist. Der „Index ... Include ()“ erzeugt einen separaten physikalischen Datenspeicher automatisch vom System verwaltet. Es ist vom Konzept her sehr ähnlich zu einer Oracle-materialisierte Ansicht.

https://msdn.microsoft.com/en-us/library/ ms190806.aspx

https://technet.microsoft.com/en-us/library/ ms189607 (v = SQL.105) aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top