sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es la práctica más eficiente/mejor para Upsert 5000+ filas sin Merge en SQL Server?

Primero haría la ACTUALIZACIÓN; de lo contrario, actualizará las filas que acaba de insertar

SELECT .. INTO #temp FROM (shredXML)

BEGIN TRAN

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

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

COMMIT

También consideraría cambiar el XML a una tabla temporal y usar SQLBulkCopy. Descubrimos que esto es más eficiente que analizar XML generalmente para más de unos pocos cientos de filas. Si no puede cambiar esto, ¿destruye primero el XML en una tabla temporal?