it-swarm.com.de

Gespeicherte Prozeduren Vs. Ansichten

Ich habe beide verwendet, aber mir ist nicht klar, wann ich eins vor dem anderen bevorzugen sollte. Ich meine, ich weiß, dass gespeicherte Prozeduren Parameter aufnehmen können ... aber wirklich können wir mit Views auch das Gleiche tun, oder? 

Wenn man also die Leistung und andere Aspekte berücksichtigt, wann und warum sollte ich eins vor dem anderen bevorzugen?

62
Vishal

Nun, ich würde die gespeicherte Prozedur besser für die Kapselung von Code- und Kontrollberechtigungen verwenden.

Eine Ansicht ist keine Kapselung, sondern ein Makro, das erweitert wird. Wenn Sie schon bald anfangen, sich Ihren Ansichten anzuschließen, haben Sie einige abscheuliche Fragen. Ja sie können verbunden werden, aber sie sollten nicht ..

Views sind also ein Werkzeug, das ihren Platz hat (indizierte Views zum Beispiel) wie gespeicherte Prozeduren.

35
gbn

Ansichten haben den Vorteil, dass sie wie Tabellen behandelt werden können. Sie können WHERE verwenden, um gefilterte Daten von ihnen zu erhalten, sich ihnen anzuschließen und so weiter. Sie können sogar Daten in sie einfügen, wenn sie einfach genug sind. Ansichten ermöglichen im Gegensatz zu gespeicherten Prozeduren auch die Indizierung ihrer Ergebnisse.

19
Matti Virkkunen

Eine View ist wie eine einzelne gespeicherte Abfrageanweisung. Sie kann keine komplexe Logik oder mehrere Anweisungen enthalten (über Union hinaus). Für alles, was über Parameter komplex oder anpassbar ist, würden Sie gespeicherte Prozeduren wählen, die eine viel größere Flexibilität ermöglichen.

Es ist üblich, in einer Datenbankarchitektur eine Kombination aus Ansichten und gespeicherten Prozeduren zu verwenden, und dies aus unterschiedlichen Gründen. Manchmal ist es erforderlich, die Abwärtskompatibilität in Sprocs zu erreichen, wenn das Schema neu entwickelt wird, und manchmal, um die Daten manipulierbarer zu machen, verglichen mit der Art und Weise, wie sie nativ in Tabellen gespeichert werden (entnormale Ansichten).

Durch den häufigen Einsatz von Views kann die Leistung beeinträchtigt werden, da es für SQL Server schwieriger ist, diese Abfragen zu optimieren. Es ist jedoch möglich, indizierte Ansichten zu verwenden, die die Leistung beim Arbeiten mit Verknüpfungen auf die gleiche Weise wie bei indizierten Tabellen verbessern können. Es gibt viel engere Einschränkungen für die zulässige Syntax bei der Implementierung von indizierten Ansichten und viele Feinheiten, um sie je nach Edition von SQL Server zum Laufen zu bringen.

Betrachten Sie Views eher als Tabellen als gespeicherte Prozeduren.

13
TheCodeKing

Der Hauptvorteil von gespeicherten Prozeduren besteht darin, dass Sie die Integration von Logik (Skripting) ermöglichen. Diese Logik kann so einfach sein wie ein IF/ELSE oder komplexer wie DO WHILE-Schleifen, SWITCH/CASE.

12
Nasir

Ich korreliere die Verwendung von gespeicherten Prozeduren mit der Notwendigkeit, Transaktionen an und von der Datenbank zu senden/zu empfangen. Das heißt, wann immer ich Daten an meine Datenbank senden muss, verwende ich eine gespeicherte Prozedur. Dasselbe gilt, wenn ich Daten aktualisieren oder die Datenbank nach Informationen abfragen möchte, die in meiner Anwendung verwendet werden sollen. 

Datenbankansichten eignen sich hervorragend, wenn Sie eine Teilmenge von Feldern aus einer bestimmten Tabelle bereitstellen möchten, Ihren MS Access-Benutzern die Möglichkeit geben, die Daten anzuzeigen, ohne dass sie geändert werden müssen, und um sicherzustellen, dass Ihre Berichte die erwarteten Ergebnisse erzeugen. 

5
SidC

Ansichten sind nützlich, wenn es eine bestimmte Kombination von Tabellen oder eine Untermenge von Daten gibt, die Sie regelmäßig abfragen möchten, z. B. wenn ein Benutzer mit seinen Berechtigungen Mitglied ist. Ansichten sollten tatsächlich als Tabellen behandelt werden.

Gespeicherte Prozeduren sind Teile von SQL-Code, die "kompiliert" werden, um optimaler ausgeführt zu werden als eine zufällige andere Abfrage. Der Ausführungsplan von SQL-Code in einer gespeicherten Prozedur ist bereits erstellt, sodass die Ausführung etwas reibungsloser als die einer normalen SQL-Anweisung ausgeführt wird. 

4
Joachim VR

Zwei Gründe.

Verwenden Sie die gespeicherte Prozedur anstelle der Ansicht, wenn Sie nicht möchten, dass das Einfügen möglich ist. Beim Einfügen in eine Ansicht wird möglicherweise nicht das gegeben, was sie zu tun scheint. In eine Tabelle wird eine Zeile eingefügt, die möglicherweise nicht mit der Abfrage in der Ansicht übereinstimmt. Eine Zeile, die dann nicht in der Ansicht angezeigt wird. irgendwo eingefügt, aber nicht wo die Aussage es erscheinen lässt.

Verwenden Sie eine Ansicht, wenn Sie das Ergebnis einer gespeicherten Prozedur nicht aus einer anderen gespeicherten Prozedur verwenden können (ich konnte nie die letztere funktionieren lassen, zumindest mit MySQL).

0
Hibou57