8 我刚刚了解了新的sp_executesql存储过程。我喜欢这样一种事实,那就是可以在SQL Server中执行参数化的代码。 但是,我想知道没有任何参数时使用sp_executesql存储过程与直接调用EXEC之间有什么区别。另外,有性能暗示吗? exec('select * from line_segment') exec sp_executesql N'select * from line_segment' 此外,2005年和2008年之间是否有区别?还是它们处理这些问题相同? sql-server-2008 sql-server-2005 t-sql — 理查德 source
11 sp_executesql支持参数化,而EXEC仅接受字符串。 只有可能出现的性能差异是由于参数设置引起的,即,参数化的sp_executesql调用更有可能具有可重用的缓存计划。EXEC调用可能会导致计划缓存中大量一次性空间浪费。 — 马克·斯托里·史密斯 source 因此,当不带参数调用sp_executesql时,它与EXEC一样有效吗? — 理查德 如果两者产生相同的执行计划,则是,性能必须相同。您可能会争辩说,参数嗅探可能会导致sp_executesql出现问题,但其原因和解决方案与存储过程相同。 — Mark Storey-Smith,