क्या आपके पास लक्ष्य तालिका में अनुक्रमित पहचान कॉलम है? यह उन कुछ मामलों में से एक है जहां मैं वास्तव में 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) द्वारा समायोज्य है।>