当我在 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 多秒,而第一个查询只需要几毫秒。我真的必须去更改我的所有查询以不使用参数吗?