Unterschied zwischen exec () und sp_executesql ohne Parameter?
-
16-10-2019 - |
Frage
Ich habe gerade etwas über das neue speicherte Verfahren von SP_Executesql erfahren. Ich mag die Tatsache, dass es eine Möglichkeit gibt, parametrisierten Code aus SQL Server auszuführen.
Ich frage mich jedoch, was der Unterschied zwischen der Verwendung der speicheren SP_Executesql -Prozedur ist, wenn Sie keine Parameter haben, im Vergleich zu dem direkten Aufruf direkt. Gibt es auch eine Leistungsimplikation?
exec('select * from line_segment')
exec sp_executesql N'select * from line_segment'
Gibt es auch einen Unterschied zwischen 2005 und 2008 oder behandeln sie diese gleich?
Lösung
SP_Executesql unterstützt die Parametrisierung, während Exec nur eine Zeichenfolge akzeptiert.
Nur Leistungsunterschiede, die auftreten können, sind auf die Parametrisierung zurückzuführen, dh ein parametrisierter SP_Executesql -Aufruf hat eher einen wiederverwendbaren zwischengespeicherten Plan. Ein Exec -Anruf wird wahrscheinlich zu vielen Einzelnutzungsraumverschwendung im Plan -Cache führen.