Tôi sẽ thực hiện việc CẬP NHẬT trước nếu không bạn sẽ cập nhật các hàng bạn vừa chèn vào
SELECT .. INTO #temp FROM (shredXML)
BEGIN TRAN
UPDATE ... FROM WHERE (matches using #temp)
INSERT ... SELECT ... FROM #temp WHERE NOT EXISTS
COMMIT
Tôi cũng sẽ xem xét việc thay đổi XML thành một bảng tạm thời và sử dụng SQLBulkCopy. Chúng tôi nhận thấy điều này hiệu quả hơn sau đó phân tích cú pháp XML nói chung cho hơn vài trăm hàng. Nếu bạn không thể thay đổi điều này thì trước tiên bạn có phải chia nhỏ XML thành một bảng tạm thời không?