sql-server-2005 – 为什么SQL Server在运行参数化查询时不会使
发布时间:2020-12-30 16:10:00 所属栏目:编程 来源:网络整理
导读:当我在SQL Server 2005中执行以下查询时,它行使索引查找,通过查察执行打算举办验证. SELECT *FROM AccountWHERE Number = '123456789' 可是当我运行沟通的查询但行使参数时,它行使索引扫描. DECLARE @AccountNumber NVarChar(25)SET @AccountNumber = '123456
当我在SQL Server 2005中执行以下查询时,它行使索引查找,通过查察执行打算举办验证. SELECT * FROM Account WHERE Number = '123456789' 可是当我运行沟通的查询但行使参数时,它行使索引扫描. DECLARE @AccountNumber NVarChar(25) SET @AccountNumber = '123456789' SELECT * FROM Account WHERE Number = @AccountNumber 因为此表有高出1000万行,因此第二个查询必要30秒以上,而第一个查询只需几毫秒.我是否真的必需将我的全部查询变动为不行使参数? 办理要领行使常量和变量之间存在差别,由于简朴地说,SQL Server会实行针对一样平常环境举办优化.可是,在这种环境下,我起首想到的是数据范例优先级导致隐式转换.数字列是什么数据范例? 示例:说它是varchar(25). nvarchar具有比varchar更高的优先级,因此在较量之前隐式转换列. 我最近通过较量varchar和SUSER_SNAME被咬了.我应该知道更好. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |