मैं पहले UPDATE करूंगा अन्यथा आप उन पंक्तियों को अपडेट कर देंगे जिन्हें आपने अभी डाला है
SELECT .. INTO #temp FROM (shredXML)
BEGIN TRAN
UPDATE ... FROM WHERE (matches using #temp)
INSERT ... SELECT ... FROM #temp WHERE NOT EXISTS
COMMIT
मैं एक्सएमएल को एक अस्थायी तालिका में बदलने और SQLBulkCopy का उपयोग करने पर भी विचार करता हूं। हमने पाया है कि यह आम तौर पर कुछ सौ से अधिक पंक्तियों के लिए XML को पार्स करने के बाद अधिक कुशल है। यदि आप इसे बदल नहीं सकते हैं तो क्या आप पहले एक्सएमएल को एक अस्थायी तालिका में काटते हैं?