ターゲット表に索引付けされた ID 列がありますか?これは、私が実際に WHILE ループを使用したい数少ないケースの 1 つです。あなたが投稿したリンクの解決策の主な問題は、不適切なインデックスの使用です。
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
それほど珍しくない代理キー (主キーとしての ID 列) がある場合、これは主キーで単純なインデックス シークを引き起こし、単純に増加量 (例では 5000) によって調整できます。