Es geht dabei weniger um Performance, als um Wartbarkeit und Abstraktion:
Wenn man eine DML-Operation als SP kapselt, dann ist für die Applikation die Sache erledigt. Sie sagt dem
DBMS 'Speicher das Zeugs mal'. WIE die
DBMS das genau macht, ist egal. Und wie es heute bzw. morgen aussieht, kann der Applikation auch egal sein. Wenn später die einfache INSERT-Anweisung in EINE Tabelle mal aufgespaltet werden soll (vielleicht will man ja einen zweiten Server verwenden oder spaltet die Tabelle in mehrere auf), dann müsste man die Applikation aufbohren. Mit einer Stored Procedure hat man die Aufgaben schön getrennt, ändert nur die Prozedur und fettich.
Vielleicht will man -schwupps- mal eben ein Logging einbauen: Kein Problem, das geht sogar im laufenden Betrieb.
Oder mal eine Konsistensprüfung: No problem...
Natürlich erfolgt der Zugriff auf die Tabellen dann auch nicht direkt, sondern grundsätzlich und ausnahmslos über Views/Functions. Auch hier hat man dann eine Möglichkeit, die Tabelle später zu trennen, erweitern oder komplett zu verändern: So lange die Applikation immer die gleiche Datenstruktur 'sieht'...
Weiterhin braucht man keine 4 Prozeduren pro Tabelle: Wir verwenden pro (logischer) Tabelle genau eine Stored Procedure mit einem Parameter 'Action', der angibt, ob man einfügen, löschen und verändern möchte. Nach dem 'Action'-Parameter folgen dann die ganzen Parameter für die Operation.
Noch konsequenter ist es, die Parameter als
XML o.ä. zu übergeben, denn dann muss man daran nie wieder etwas ändern.
Wir haben mal mit einer JSON-ähnlichen Parameterübergabe experimentiert. Leider lag der Overhead, der zum extrahieren der Parameter nötig war (unoptimierte
SQL-Stringoperationen) bei ca. 10-15% der Gesamtperformance und das erschien uns damals zu hoch: Heute sind wir schlauer und würden das in Kauf nehmen, denn die Wartbarkeit steigt um das 10-50 fache (wenn man das überhaupt messen kann).
Also: Ich kann das nur empfehlen, denn es bietet eine sehr elegante und saubere Möglichkeit, das Verhalten im laufenden Betrieb zu verändern.