【发布时间】:2011-03-29 04:52:13
【问题描述】:
我正在从 .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 次读取。
为什么会有这样的差异以及如何改进?
【问题讨论】:
标签: sql sql-server tsql sql-server-profiler