gpt4 book ai didi

sql - 参数化 SQL 和 NULL 运行缓慢

转载 作者:行者123 更新时间:2023-12-02 08:55:09 25 4
gpt4 key购买 nike

我正在从.net 调用一些参数化的sql。我不知道为什么,但与不包含参数时相比,检查参数是否为 NULL 时 SQL 运行速度相当慢:

所以这个:

exec sp_executesql N'
SELECT [id]
FROM [tblAddress] (nolock)
WHERE 1 = 1
AND ([id] = @id OR @id IS NULL)

',N'@id int',
@id=4395

运行速度比这个更快:

exec sp_executesql N'
SELECT [id]
FROM [tblAddress] (nolock)
WHERE 1 = 1
AND ([id] = @id)

',N'@id int',
@id=4395

运行 SQL 探查器,超过 100 万行的顶级查询的持续时间为 175,读取次数为 3720,但第二个查询的持续时间为 1,读取次数为 3。

为什么会出现这样的差异以及如何改进?

最佳答案

OR 子句不是 SARGABLE,因此使用的计划是扫描,而不是像第二个那样的查找

试试这个:2 次搜索

SELECT [id]
FROM [tblAddress]
WHERE [id] = @id
UNION ALL
SELECT [id]
FROM [tblAddress]
WHERE @id IS NULL)

注意:您不需要 NOLOCK 提示。或者1=1

关于sql - 参数化 SQL 和 NULL 运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468032/

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