我有一个运行超快,约为一秒,一个SQL查询不使用变量时,如:为什么SQL Server在使用变量时变慢?
WHERE id BETWEEN 5461094 and 5461097
但是,当我有:
declare @firstId int
declare @lastId int
set @firstId = 5461094
set @lastId = 5461097
...
WHERE id BETWEEN @firstId and @lastId
...查询运行非常缓慢,几分钟后才完成。为什么会发生?我需要使用变量。我可以做任何改进以避免这种性能问题吗?
在Oracle中,如果范围总是很小,那么一切都会好的。它会根据第一个变量来选择计划。如果它总是很小,你总是很好。 IT是在极端情况下摆动的情况。我认为SS最近添加了一些类似于偷看的东西......也许是'05或'08。 – 2008-11-25 18:36:58