Vic*_*ues 18 sql sql-server stored-procedures
我有一个sql查询,运行超快,大约一秒,当不使用变量,如:
WHERE id BETWEEN 5461094 and 5461097
Run Code Online (Sandbox Code Playgroud)
但是当我有:
declare @firstId int
declare @lastId int
set @firstId = 5461094
set @lastId = 5461097
...
WHERE id BETWEEN @firstId and @lastId
Run Code Online (Sandbox Code Playgroud)
...查询运行速度很慢,仅在几分钟后完成.为什么会这样?我需要使用变量.我可以做任何改进以避免这种性能问题吗?
小智 24
好,
我的查询是去图书馆,给我3到5之间的所有书籍
你可以选择一辆正确,快速,便宜,高效且足以携带3本书的自行车.
新查询.
去图书馆,获取@x和@y之间的所有书籍.
选车.
前进.
这就是发生的事情.如果我要求1和Maxvalue之间的书籍,你会选择自卸卡车吗?如果x = 3且y = 5,那就太过分了.SQL必须在看到数字之前选择计划.