Ik zou eerst de UPDATE doen, anders update je de rijen die je zojuist hebt ingevoegd
SELECT .. INTO #temp FROM (shredXML)
BEGIN TRAN
UPDATE ... FROM WHERE (matches using #temp)
INSERT ... SELECT ... FROM #temp WHERE NOT EXISTS
COMMIT
Ik zou ook overwegen om de XML te wijzigen in een tijdelijke tabel en SQLBulkCopy te gebruiken. We hebben geconstateerd dat dit efficiënter is dan het ontleden van XML in het algemeen voor meer dan een paar honderd rijen. Als je dit niet kunt veranderen, versnipper je dan eerst de XML in een tijdelijke tabel?