Máte v cílové tabulce sloupec indexované identity? Toto je jeden z mála případů, kdy skutečně rád používám smyčku WHILE. Hlavním problémem s řešením v odkazu, který jste zveřejnili, je špatné použití indexu.
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
V případech, kdy máte náhradní klíč (sloupec identity jako primární klíč), což není tak neobvyklé, způsobí to jednoduché hledání indexu na primárním klíči a je nastavitelné jednoduše podle velikosti růstu (v příkladu 5000)