Frage:
Wie kann dynamisches SQL optimiert werden?
Lösung:
Dynamisches SQL sollte grundsätzlich vermieden werden, da es vom Abfrageoptimierer nicht erkannt und somit bei jeder Ausführung erneut kompiliert wird. Ergo geht der Vorteil des gespeicherten Ausführungsplans verloren.
Theoretisch ist die Vermeidung von dynamischem SQL leicht gesagt; praktisch aber manchmal notwendig und unumgänglich. Wenn es denn gar nicht anders geht, sollte dynamisches SQL aber per sp_executesql und nicht mit dem einfachen Execute ausgeführt werden.
Bei sp_executesql ist es lt. Onlinehilfe „wahrscheinlich“, dass der Ausführungsplan wiederverwendet wird.