Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è la procedura più efficiente/migliore per eseguire l'upsert di oltre 5000 righe senza unire in SQL Server?

Farei prima l'AGGIORNAMENTO altrimenti aggiornerai le righe che hai appena inserito

SELECT .. INTO #temp FROM (shredXML)

BEGIN TRAN

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

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

COMMIT

Considererei anche la possibilità di modificare l'XML in una tabella temporanea e utilizzare SQLBulkCopy. Abbiamo riscontrato che questo è più efficiente dell'analisi XML in generale per più di poche centinaia di righe. Se non puoi cambiarlo, distruggi prima l'XML in una tabella temporanea?