Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quelle est la pratique la plus efficace/meilleure pour Upsert 5000+ lignes sans Merge dans SQL Server ?

Je ferais d'abord la mise à jour, sinon vous mettrez à jour les lignes que vous venez d'insérer

SELECT .. INTO #temp FROM (shredXML)

BEGIN TRAN

UPDATE ... FROM WHERE (matches using #temp)

INSERT ... SELECT ... FROM #temp WHERE NOT EXISTS

COMMIT

J'envisagerais également de changer le XML en une table temporaire et d'utiliser SQLBulkCopy. Nous avons trouvé cela plus efficace que l'analyse XML généralement pour plus de quelques centaines de lignes. Si vous ne pouvez pas changer cela, décomposez-vous d'abord le XML dans une table temporaire ?