使用EXEC sp_executesql和直接SQL之间是否存在速度差异

时间:2017-02-02 14:56:19

标签: sql-server performance tsql stored-procedures sp-executesql

如果这是一个大问题,第二个存储过程会更快吗?

CREATE PROCEDURE Customers_GetCustomer
      @CustId CHAR(5)
AS
BEGIN
      DECLARE @SQL NVARCHAR(2000)
      SET @SQL = 'SELECT ContactName FROM Customers WHERE CustomerId = @CustomerId'
      EXEC sp_executesql @SQL, N'@CustomerId CHAR(5)', @CustomerId = @CustId
END

对战:

CREATE PROCEDURE Customers_GetCustomer
      @CustId CHAR(5)
AS
BEGIN
      SELECT ContactName FROM Customers WHERE CustomerId = @CustId
END

1 个答案:

答案 0 :(得分:2)

通过这样的简单查询,即使在1000秒的执行/秒内也几乎没有差别。 (基于我自己的测试,当我遇到同样的问题时。)

假设它已正确参数化,复杂查询将只有散列较长字符串以匹配执行缓存的额外开销。

但我建议您自己测试,例如https://www.brentozar.com/archive/2015/05/how-to-fake-load-tests-with-sqlquerystress/