Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist die effizienteste / bewährteste Methode zum Upsert von mehr als 5000 Zeilen ohne Merge in SQL Server?

Ich würde das UPDATE zuerst durchführen, sonst aktualisieren Sie die Zeilen, die Sie gerade eingefügt haben

SELECT .. INTO #temp FROM (shredXML)

BEGIN TRAN

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

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

COMMIT

Ich würde auch in Betracht ziehen, das XML in eine temporäre Tabelle zu ändern und SQLBulkCopy zu verwenden. Wir haben festgestellt, dass dies effizienter ist, als XML im Allgemeinen für mehr als ein paar hundert Zeilen zu analysieren. Wenn Sie dies nicht ändern können, schreddern Sie dann zuerst das XML in eine temporäre Tabelle?