我有表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分钟才能完成更新,并且当记录数增加时,更新时间也会增加。请帮助我更快地更新
答案 0 :(得分:0)
您还可以在不使用while循环的情况下更新列值 例如-
UPDATE Number
SET Value = dbo.func_increase_number
FROM
Number
WHERE Value IS NULL OR Value =''
检查并告诉我它是否有效