Есть ли у вас индексированный столбец идентификаторов в целевой таблице?Это один из немногих случаев, когда мне действительно нравится использовать цикл 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)