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.