Frage:
Wie kann es sein dass eine Prozedur am SQL-Server langsam läuft, obwohl sie bei der Entwicklung schnell abgearbeitet wurde?
Antwort:
Dazu haben wir heute einen interessanten Artikel gelesen. Er besagt zusammengefasst folgendes:
Eine SP mit vielen Parameter erstellt beim ersten Aufruf einen Ausführungsplan.
Dieser ist aber je nach übergebenen Parametern mehr oder weniger optimal.
Wenn man nun die Aufruf-Parameter innerhalb der SP noch einmal an einen internen Parameter übergibt,
dann kann das die Performance verbessern.
Beispiel:
Original:
1: create procedure MyProc(@date datetime)
2: as begin
3: select * from myTable where date<@date
4: end
Optimiert:
1: create procedure MyProc(@date datetime)
2: as begin
3: declare @localDate datetime
4: Set @localdate = @date
5: select * from myTable where date<@localDate
6: end
Den Original-Artikel findet man hier.