Имате ли индексирана колона за самоличност в целевата таблица? Това е един от малкото случаи, в които наистина обичам да използвам WHILE цикъл. Основният проблем с решението във връзката, която сте публикували, е лошото използване на индекса.
DECLARE @START INT, @FINISH INT, @LOOPEND INT
SELECT @START = 1, @FINISH = 5000, @LOOPEND = MAX(ID)
from Bla
WHILE @START <= @LOOPEND
BEGIN
update a
set XML = b.xml
from Bla as a
inner join #temp as b on a.i = b.i
WHERE a.ID BETWEEN @START AND @FINISH
SET @START = @FINISH + 1
SET @FINISH = @FINISH + 5000
END
В случаите, когато имате сурогатен ключ (колона за самоличност като първичен ключ), което не е толкова необичайно, това ще доведе до просто търсене на индекс на първичния ключ и може да се регулира просто чрез сумата на растеж (5000 в примера)