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

Jakie są zalety używania składni konstruktora wierszy w instrukcji insert T-Sql?

Tak, istnieje dość duża różnica w wydajności między:

declare @numbers table (n int not null primary key clustered);

insert into @numbers (n)
values (0)
     , (1)
     , (2)
     , (3)
     , (4);

i

declare @numbers table (n int not null primary key clustered);

insert into @numbers (n) values (0);
insert into @numbers (n) values (1);
insert into @numbers (n) values (2);
insert into @numbers (n) values (3);
insert into @numbers (n) values (4);

Fakt, że każdy insert oświadczenie ma swoją własną niejawną transakcję, która to gwarantuje. Możesz to łatwo udowodnić, przeglądając plany wykonania dla każdej instrukcji lub mierząc czas wykonania przy użyciu set statistics time on; . Istnieje stały koszt związany z „konfiguracją” i „zrywaniem” kontekstu dla każdej pojedynczej wstawki, a drugie zapytanie musi zapłacić tę karę pięć razy, podczas gdy pierwsze płaci ją tylko raz.

Metoda list jest nie tylko bardziej wydajna, ale można jej również użyć do zbudowania tabeli pochodnej:

select *
from (values
    (0)
  , (1)
  , (2)
  , (3)
  , (4)
) as Numbers (n);

Ten format ma około 1000 wartości i umożliwia dołączanie i filtrowanie listy przed jej wstawieniem. Można również zauważyć, że nie jesteśmy przywiązani do insert w ogóle oświadczenie! Jako de facto tabela ta konstrukcja może być używana wszędzie tam, gdzie odwołanie do tabeli byłoby poprawne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Typy kursorów programu SQL Server — Kursor ZESTAWU KLUCZY | Samouczek SQL Server / Samouczek TSQL

  2. Tabele programu SQL Server nazwane za pomocą schematu dbo

  3. Pozycje ORDER BY muszą pojawić się na liście wyboru, jeśli instrukcja zawiera operator UNION, INTERSECT lub EXCEPT (SQL Server)

  4. Zmiana tabeli i dodanie UNIKALNEGO klucza powoduje błąd

  5. Microsoft Sync Framework — wydajność i skalowalność