如果这是一个大问题,第二个存储过程会更快吗?
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
答案 0 :(得分:2)
通过这样的简单查询,即使在1000秒的执行/秒内也几乎没有差别。 (基于我自己的测试,当我遇到同样的问题时。)
假设它已正确参数化,复杂查询将只有散列较长字符串以匹配执行缓存的额外开销。
但我建议您自己测试,例如https://www.brentozar.com/archive/2015/05/how-to-fake-load-tests-with-sqlquerystress/。