为什么语句在SQL Server中的一段时间内运行缓慢?

时间:2018-01-03 04:39:17

标签: sql-server

我正在使用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

1 个答案:

答案 0 :(得分:0)

它一直运行直到内部代码为真...所以可能在8秒的时间内,查询返回了一些结果。在8秒结束时,最后一个SELECT没有返回任何结束WHILE循环的行。这就是花了8秒的原因。 可能,您的代码执行了数百个内部查询,每次返回一些行。所以没有性能差异。只有WHILE循环...