为什么SQL Server在使用变量时变慢?

前端之家收集整理的这篇文章主要介绍了为什么SQL Server在使用变量时变慢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个SQL查询运行超快,大约一秒钟,当不使用变量,如:
WHERE id BETWEEN 5461094 and 5461097

但是当我有:

declare @firstId int
declare @lastId int

set @firstId = 5461094
set @lastId = 5461097

...
    WHERE id BETWEEN @firstId and @lastId

查询运行速度非常慢,仅在几分钟之后完成.为什么会这样呢?我需要使用变量.我可以做任何改进来避免这种性能问题吗?

解决方法

这是因为当值被硬编码时,它可以查找表中数据的 the statistics,并找出要运行的最佳查询.看看每个这些查询的执行计划.当您使用变量时必须扫描.

如果范围总是很小,你可能可以使用索引提示来帮助这个.

猜你在找的MsSQL相关文章