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

tsql - Wydajność wstawiania wsadowego

Chociaż może się wydawać, że mniej kodu do przetworzenia powinno dać Ci wzrost wydajności, używanie pierwszej opcji (union all) jest złym pomysłem. Wszystkie instrukcje select muszą zostać przeanalizowane i wykonane przed wstawieniem danych do tabeli. Zużywa dużo pamięci i może trwać wiecznie, nawet w przypadku dość małej ilości danych. Z drugiej strony oddzielne instrukcje wstawiania są wykonywane "w locie".

Uruchom prosty test w SSMS, który to udowodni:utwórz prostą tabelę z 4 polami i spróbuj wstawić 20 tys. wierszy. Drugie rozwiązanie zostanie wykonane za kilka sekund, podczas gdy pierwsze... zobaczysz :).

Innym problemem jest to, że gdy dane w wierszu som są nieprawidłowe (na przykład niezgodność typów), otrzymasz błąd, taki jak Conversion failed when converting the varchar value 'x' to data type int. , ale nie będziesz miał żadnej wskazówki, który wiersz się nie powiódł - musiałbyś sam go znaleźć. Ale dzięki osobnym wstawkom będziesz dokładnie wiedzieć, która wstawka się nie powiodła.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdzanie nakładania się przedziałów czasowych, problem strażnika [SQL]

  2. Używając SSIS, jak znaleźć miasta o największej liczbie mieszkańców?

  3. 3 sposoby konwersji HEX na INT w SQL Server (T-SQL)

  4. Uzupełnij ciąg zerami na początku, aby miał 3 znaki w SQL Server 2008

  5. SQL Server — transakcje wycofują się w przypadku błędu?