小编Ste*_*ser的帖子

为什么 SQL Server 在运行参数化查询时不使用索引查找?

当我在 SQL Server 2005 中执行以下查询时,它使用索引查找,通过查看执行计划进行验证。

SELECT *
FROM   Account
WHERE  Number = '123456789'
Run Code Online (Sandbox Code Playgroud)

但是当我运行相同的查询但使用参数时,它使用索引扫描。

DECLARE @AccountNumber NVarChar(25)
SET @AccountNumber = '123456789'

SELECT *
FROM   Account
WHERE  Number = @AccountNumber
Run Code Online (Sandbox Code Playgroud)

由于这个表有超过 1000 万行,第二次查询需要 30 多秒,而第一个查询只需要几毫秒。我真的必须去更改我的所有查询以不使用参数吗?

performance sql-server-2005

3
推荐指数
1
解决办法
1375
查看次数

标签 统计

performance ×1

sql-server-2005 ×1