SQL 包含 TOP 1 的命令具有无限加载时间

SQL command containing TOP 1 has infinite load time

我有一个 SQL 命令可以正常工作。但是,今天该命令似乎已停止工作。它只是加载而没有结束。

DECLARE @varVKA VARCHAR(20) 
SELECT TOP 1 @varVKA = t.AufNr 
FROM TABLE AS t 
WHERE RStatus = '10' 
Order By AufNr asc 

UPDATE TABLE
SET RStatus = '30' WHERE AufNr = @varVKA

我做了一些故障排除,我唯一注意到的是,当我将 TOP 更改为任何其他数量时,结果几乎是即时的。

有什么改变可以使 TOP 1 不起作用?该命令已经正常运行一年多了。

经过一些试验,我想我找到了解决办法。 我仍然不确定为什么错误发生至少一年没有失败,但也许它与“TOP 1 AufNr”和“ORDER BY AufNr asc”有关。

一旦我用“min”替换了“ORDER BY”,这似乎工作类似,命令再次工作。

我也研究了@GordonLinoff 的建议并希望改进命令。

现在命令如下所示:

UPDATE TableName
SET Rstatus = '30' 
WHERE AufNr =(

SELECT  min(AufNr) 
FROM TableName 
WHERE RStatus = '10')

如果你只想更新一行,那么你可以这样做:

UPDATE t
    SET RStatus = '30'
    FROM (SELECT TOP 1 t.* 
          FROM TABLE t 
          WHERE RStatus = '10' 
          ORDER BY AufNr ASC
         ) t;