Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é a prática mais eficiente / recomendada para Upsert 5000+ linhas sem mesclar no SQL Server?


Eu faria o UPDATE primeiro, caso contrário você atualizará as linhas que acabou de inserir
SELECT .. INTO #temp FROM (shredXML)

BEGIN TRAN

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

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

COMMIT

Eu também consideraria mudar o XML para uma tabela temporária e usar SQLBulkCopy. Descobrimos que isso é mais eficiente do que analisar XML geralmente por mais de algumas centenas de linhas. Se você não pode alterar isso, você fragmenta o XML em uma tabela temporária primeiro?