Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaka jest najbardziej wydajna/najlepsza praktyka w zakresie Upsert 5000+ wierszy bez scalania w programie SQL Server?

Najpierw wykonałbym UPDATE, w przeciwnym razie zaktualizujesz wiersze, które właśnie wstawiłeś

SELECT .. INTO #temp FROM (shredXML)

BEGIN TRAN

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

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

COMMIT

Rozważyłbym również zmianę XML na tabelę tymczasową i użycie SQLBulkCopy. Odkryliśmy, że jest to bardziej wydajne niż analizowanie XML ogólnie dla więcej niż kilkuset wierszy. Jeśli nie możesz tego zmienić, czy najpierw niszczysz XML do tabeli tymczasowej?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co oznacza ON [PRIMARY]?

  2. BULK INSERT z kolumną tożsamości (auto-inkrementacja)

  3. Przekaż datę i godzinę do procedury składowanej

  4. Jaka jest (są) różnica między NOLOCK a UNCOMMITTED?

  5. Sprawdź, czy tabela zawiera wiersze, czy nie sql server 2005