当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《使用变量时为什么SQLServer会变慢?》经验,为你挑选了2个好方法。

我有一个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

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



1> 小智..:

好,

    您是优化工具,查询计划是一种工具.

    我会给你一个询问,你必须选择车辆.

    图书馆中的所有图书都有序号

我的查询是去图书馆,给我3到5之间的所有书籍

你可以选择一辆正确,快速,便宜,高效且足以携带3本书的自行车.

新查询.

去图书馆,获取@x和@y之间的所有书籍.

选车.

前进.

这就是发生的事情.如果我要求1和Maxvalue之间的书籍,你会选择自卸卡车吗?如果x = 3且y = 5,那就太过分了.SQL必须在看到数字之前选择计划.


这是关于微软做错了什么的一个很好的解释。现实生活:询问可变值,然后选择合适的车辆。

2> Ben R..:

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

如果范围总是很小,您可以使用索引提示来帮助它.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有