更快更新多行SQL Server

时间:2018-10-01 02:28:03

标签: sql-server

我有表Number (Id int primary key identity, Value int)。我想用一个空值和另一个不重叠的值更新2000列Value

我用一段时间来更新

DECLARE @i_min INT
SET @i_min = 1

DECLARE @max INT

SELECT @max = COUNT(*) 
FROM Number 
WHERE ((Value IS NULL OR Value =''))

WHILE @i_min <= @max 
BEGIN
    UPDATE b 
    SET b.Value = dbo.func_increase_number 
    FROM 
        (SELECT TOP 1 Value 
         FROM Number a
         WHERE (a.Value IS NULL OR a.Value ='')) b

    SET @i_min = @i_min + 1

但是它正在更新每个记录,并且需要2分钟才能完成更新,并且当记录数增加时,更新时间也会增加。请帮助我更快地更新

1 个答案:

答案 0 :(得分:0)

您还可以在不使用while循环的情况下更新列值 例如-

UPDATE Number
SET Value = dbo.func_increase_number 
FROM 
Number 
WHERE Value IS NULL OR Value =''

检查并告诉我它是否有效