gpt4 book ai didi

sql-server - 使用 EXEC sp_executesql 和直接 SQL 有速度差异吗

转载 作者:行者123 更新时间:2023-12-03 13:20:38 27 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

4年前关闭。




Improve this question




如果它是一个大查询,第二个存储过程会更快吗?

CREATE PROCEDURE Customers_GetCustomer
@CustId CHAR(5),
@type int,
@search nvarchar
AS
BEGIN
DECLARE @SQL NVARCHAR(2000)
SET @SQL = 'SELECT ContactName FROM Customers WHERE CustomerId = '+CONVERT(nvarchar(20), @CustId)
if(@type = 1)
BEGIN
@SQL += 'AND NAME='+@search
END
if(@type = 2)
BEGIN
@SQL += 'AND ADDRESS='+@search
END
EXEC sp_executesql @SQL
END

相对:
CREATE PROCEDURE Customers_GetCustomer
@CustId CHAR(5),
@type int,
@search nvarchar
AS
BEGIN
SELECT ContactName FROM Customers
WHERE CustomerId = @CustId
AND (NAME = @search OR @type <> 1)
AND (ADDRESS = @search OR @type <> 2)
END

第一个和第二个之间哪个更好?

最佳答案

使用这样的简单查询,即使每秒执行 1000 次,也几乎没有区别。 (基于我自己在遇到同样问题时的测试。)

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

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

关于sql-server - 使用 EXEC sp_executesql 和直接 SQL 有速度差异吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42005398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com