Moin,
der Titel sagt schon alles, wann macht es Sinn gespeicherte Prozeduren zu nutzen?
Klar, wenn es komplexe Abfragen sind.
Klar, um Injection zu vermeiden.
Aber macht es auch Sinn bei "einfachen Abfragen" wie beispielsweise: SELECT Id, Name, Nummer FROM Mitarbeiter WHERE Alter < 30 ?
Hallo Kriz,
ich würde so gut es geht, vermeiden in der DB Logik abzubilden.
Das ist meiner Ansicht nach schwer zu Testen und irgendwie ja auch nicht die Aufgabe einer DB.
sg,
Xan
Klar, wenn es komplexe Abfragen sind.
Klar, um Injection zu vermeiden.
Beides für mich keine pauschalen Gründe, StoredProcs zu verwenden.
Gerade komplexe Dinge werden in SPs sehr schnell unübersichtlicht und gehöre besser die Anwendungsschicht.
Aber macht es auch Sinn bei "einfachen Abfragen" wie beispielsweise: SELECT Id, Name, Nummer FROM Mitarbeiter WHERE Alter < 30 ?
Auch hier: pauschal nein.
Wo Stored Procs Sinn machen:
Hier im Forum vermeiden wir verschiedene Round Trips mit Stored Procs:
Dadurch, dass es nur "Aktionen" sind, sparen wir uns die ganze Query-Auswertung aus dem Client.
So ist nur ein einziger SQL Request notwendig und nicht mehrere. Dadurch ist die Latenz geringer
Ansonsten wirds dünn für positives von SPs.
--> Wenn Dein Query also keine DB-spezifischen Dinge macht, dann lass lieber SPs aus dem Spiel.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Oha, ich dachte gespeicherte Prozeduren sind das "Non plus ultra" der Sicherheit. Na man lernt nie aus.
Vielen Dank für die Tips!
Mit Sicherheit haben Stored Procs gar nichts zutun.
Sie sind auch nicht performanter; befinden sich technisch im gleichen Query Cache wie normale Abfragen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Kriz,
"Non plus ultra" der Sicherheit
Das wichtigste ist die Queries zu parametrisieren -> [Artikelserie] SQL: Parameter von Befehlen bzw. für andere Datenzugriffstechnologien (EF Core, etc.) analog.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"