我正在使用SQL Server 2016(localDB)。我有以下数据库脚本需要8秒,但是,如果我单独运行,select
语句只需要0秒。实际上select
语句总是返回0行。
你知道为什么在这种情况下它很慢吗?
PS:我有另一个类似的声明,它运作正常,只有这一个需要超长。
while exists (select *
from vidyoRoomCall vrc
inner join reportEffectiveRoomUsage eu on vrc.vidyoRoomId = eu.vidyoRoomId
and vrc.leaveTime is not null
and datediff(second, vrc.joinTime, vrc.leaveTime) < 100000 -- @max_second
where (vrc.joinTime between eu.[start] and eu.[end]
and vrc.leaveTime > eu.[end])
or (vrc.leaveTime between eu.[start] and eu.[end]
and vrc.joinTime < eu.[start])
)
begin
print 'ignore this since it is only run here' -- this never print
end
答案 0 :(得分:0)
它一直运行直到内部代码为真...所以可能在8秒的时间内,查询返回了一些结果。在8秒结束时,最后一个SELECT没有返回任何结束WHILE循环的行。这就是花了8秒的原因。 可能,您的代码执行了数百个内部查询,每次返回一些行。所以没有性能差异。只有WHILE循环...