Extreme Veteran
Beiträge: 567
| Hallo,
Christian Kehl - 19.11.13 11:55
Ich grübele über einem Select, der wesentlich langsamer wird, wenn Variablen als Parameter verwendet werden. Setze ich feste Werte als Parameter, ist der Select ca. 3mal schneller. Die Problematik bewegt sich leider nicht im 10tel-Sekunden-Bereich...
Die Parameter sind als nvarchar() deklariert (das läßt sich leider nicht vermeiden).
Zur Verdeutlichung ein kleines Beispiel:
Select Feld1
from Tabelle1
Where Feld1 = 'A'
ist 3mal schneller als:
Declare @P nvarchar(10)
Set @P = 'A'
Select Feld1
from Tabelle1
Where Feld1 = @P
Sp_executesql würde ich gerne vermeiden.
... weil es auf jeden Fall noch langsamer wäre, weil nicht auf einen gespeicherten Ausführungsplan zurückgegriffen werden kann.
Ansonsten sollten weder der Datentyp noch der Umstand, dass Parameter verwendet werden, einen spürbaren Unterschied bei der Ausführung machen.
Hast du im Management Studio schon mal den Ausführungsplan mitlaufen lassen? Was sagt der?
Wie sieht das Originalstatement aus?
----- Gruss - Peter |