307 Stimmen

Warum erstellt man eine Ansicht in einer Datenbank?

Wann und warum entscheidet jemand, dass er eine Ansicht in seiner Datenbank erstellen muss? Warum nicht einfach eine normale gespeicherte Prozedur oder einen Select ausführen?

1voto

GRGodoi Punkte 1886

Ich erstelle xxx, das alle Beziehungen zwischen einer Haupttabelle (wie der Tabelle Products) und Referenztabellen (wie ProductType oder ProductDescriptionByLanguage) abbildet. Auf diese Weise wird eine Ansicht erstellt, die es mir ermöglicht, ein Produkt und alle seine Details abzurufen, die von seinen Fremdschlüsseln in seine Beschreibung übersetzt werden. Dann kann ich mit einem ORM Objekte erstellen, um auf einfache Weise Raster, Kombinationsfelder usw. zu erstellen.

1voto

Brian Spencer Punkte 194

Ich habe nur etwa 10 Ansichten in meinen Produktionsdatenbanken. Ich verwende mehrere für Spalten, die ich ständig benutze. Ein Satz, den ich verwende, stammt aus 7 Tabellen, einige mit Outer-Joins, und anstatt das ständig neu zu schreiben, muss ich diese Ansicht nur in einem Select aufrufen und ein oder zwei Joins machen. Für mich ist das einfach eine Zeitersparnis.

1voto

Das Kuriose an Ansichten ist, dass sie von Microsoft Access als Tabellen angesehen werden: Wenn Sie ein Microsoft Access-Frontend über ODBC mit einer SQL-Datenbank verbinden, sehen Sie die Tabellen und Ansichten in der Liste der verfügbaren Tabellen. Wenn Sie also komplizierte Berichte in MS Access vorbereiten, können Sie die Verknüpfung und Abfrage dem SQL-Server überlassen und sich so das Leben erheblich erleichtern. Dasselbe gilt für die Vorbereitung einer Abfrage in MS Excel.

1voto

jacor Punkte 11

Ich sehe eine gespeicherte Prozedur eher als eine Methode, die ich für meine Daten aufrufen kann, während eine Ansicht für mich einen Mechanismus zur Erstellung einer synthetischen Version der Basisdaten darstellt, für die Abfragen oder gespeicherte Prozeduren erstellt werden können. Ich erstelle einen View, wenn eine Vereinfachung oder Aggregation sinnvoll ist. Ich schreibe eine gespeicherte Prozedur, wenn ich einen sehr spezifischen Dienst bereitstellen möchte.

1voto

Dies beantwortet zwar nicht genau Ihre Frage, aber ich dachte, es wäre erwähnenswert Materialisierte Ansichten . Meine Erfahrung ist hauptsächlich mit Oracle aber angeblich ist SQL-Server ziemlich ähnlich.

Wir haben in unserer Architektur etwas Ähnliches verwendet, um XML-Leistungsprobleme zu lösen. Unsere Systeme sind so konzipiert, dass viele Daten als XML in einer Zeile gespeichert werden und Anwendungen möglicherweise bestimmte Werte darin abfragen müssen. Der Umgang mit vielen XMLTypen und die Ausführung von XPaths über eine große Anzahl von Zeilen wirkt sich stark auf die Leistung aus. Daher verwenden wir eine Form von materialisierten Ansichten, um die gewünschten XML-Knoten in eine relationale Tabelle zu extrahieren, sobald sich die Basistabelle ändert. Dadurch wird ein physischer Schnappschuss der Abfrage zu einem bestimmten Zeitpunkt erstellt, im Gegensatz zu Standardansichten, die ihre Abfrage bei Bedarf ausführen würden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X