2010-06-25 34 views
6

Was sind die Unterschiede zwischen gespeicherten Prozeduren und Funktionen?Gespeicherte Prozeduren und Funktionen

Immer wenn es mehr Eingabe, Ausgabeparameter gibt, gehe ich zur gespeicherten Prozedur. Wenn es nur eins ist, werde ich für Funktionen gehen.

Gibt es außerdem ein Leistungsproblem, wenn ich mehr gespeicherte Prozeduren verwende? Ich mache mir Sorgen, da ich in meinem Projekt fast 50 gespeicherte Prozeduren habe.

Wie unterscheiden sie sich konzeptionell.

Vielen Dank im Voraus!

EDITED: -

Wenn ich eine Berechnung in gespeicherte Prozedur ausgeführt und in Funktionen, ich habe festgestellt, dass sie 0,15 sec in gespeicherten Prozeduren stattfinden, während in Funktion es 0.45sec nimmt.

Überraschenderweise brauchen Funktionen mehr Zeit als gespeicherte Prozeduren. Vielleicht sind Funktionen für ihre Wiederverwendbarkeit wert.

Inline-Funktionen werden schneller als Prozeduren ausgeführt. Ich denke, das liegt daran, dass Multiselektionsfunktionen keine Statistik verwenden können, was sie verlangsamt, aber Inline-Tabellenwertfunktionen können Statistiken verwenden.

+1

Wenn Sie Ihre Leistungsmessungen durchgeführt haben, was haben Sie gelernt? Bitte aktualisieren Sie die Frage mit den tatsächlichen Ergebnissen, die Sie beim Vergleich einer Funktion und einer Prozedur erhalten haben. –

+0

Da ich viele gespeicherte Prozeduren habe, würde ich gerne überprüfen, ob es ein Leistungsproblem gibt, so viele zu haben? Frage wird bearbeitet. – satya

+0

Wenn Sie eine BEISPIEL-Funktion und eine gespeicherte BEISPIEL-Prozedur erstellt haben und diese beiden BEISPIELE 1000 Mal ausgeführt haben, um den Leistungsunterschied zu sehen, was haben Sie gelernt? Das Umschreiben aller 50 in beiden Formen ist * nicht * hilfreich. Das Ausführen von zwei Beispielen ist sehr, sehr hilfreich. –

Antwort

2

Differenz zwischen gespeicherten Prozedur und Funktionen in SQL Server ...

http://www.dotnetspider.com/resources/18920-Difference-between-Stored-Procedure-Functions.aspx

Unterschied zwischen Stored Procedures und Funktionen Benutzerdefinierte [UDF]

http://www.go4expert.com/forums/showthread.php?t=329

Stored Procedures vs. Funktionen

http://searchsqlserver.techtarget.com/tip/Stored-procedures-vs-functions

Was sind die Unterschiede zwischen den gespeicherten Prozeduren und Funktionen in ...

http://www.allinterview.com/showanswers/28431.html

Unterschied zwischen gespeicherten Prozeduren und Funktionen

http://www.sqlservercentral.com/Forums/Topic416974-8-1.aspx

1

zwischen der Verwendung eines der beiden zu entscheiden, Beachten Sie den grundlegenden Unterschied zwischen ihnen: gespeicherte Prozeduren sollen die Ausgabe an die Anwendung zurückgeben. Ein UDF gibt Tabellenvariablen zurück, während ein SPROC keine Tabellenvariable zurückgeben kann, obwohl er eine Tabelle erstellen kann. Ein weiterer bedeutender Unterschied zwischen ihnen besteht darin, dass UDFs die Serverumgebung oder die Betriebssystemumgebung nicht ändern können, während ein SPROC dies kann. Wenn T-SQL einen Fehler feststellt, stoppt die Funktion operativ, während T-SQL einen Fehler in einem SPROC ignoriert und mit der nächsten Anweisung in Ihrem Code fortfährt (vorausgesetzt, Sie haben die Fehlerbehandlung unterstützt). Sie werden auch feststellen, dass ein SPROC in einer XML FOR-Klausel verwendet werden kann, eine UDF jedoch nicht.

Wenn Sie eine Operation wie eine Abfrage mit einer FROM-Klausel haben, die das Zeichnen eines Rowsets aus einer Tabelle oder einer Gruppe von Tabellen erfordert, ist eine Funktion die richtige Wahl. Wenn Sie jedoch das gleiche Rowset in Ihrer Anwendung verwenden möchten, wäre die bessere Wahl eine gespeicherte Prozedur.

Es gibt eine ganze Reihe von Diskussionen über die Leistungsvorteile von UDFs gegenüber SPROCs. Sie könnten versucht sein zu glauben, dass gespeicherte Prozeduren Ihrem Server mehr Aufwand als eine UDF hinzufügen. Abhängig davon, wie Sie Ihren Code schreiben und welche Art von Daten Sie verarbeiten, ist dies möglicherweise nicht der Fall. Es ist immer eine gute Idee, Ihre Daten in wichtige oder zeitraubende Operationen zu schreiben, indem Sie beide Arten von Methoden auf ihnen versuchen.

Verwandte Themen