Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какви са предимствата от използването на синтаксиса на конструктора на редове в оператор за вмъкване на T-Sql?

Да, има доста голяма разлика в производителността между:

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

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

и

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);

Фактът, че всеки един insert изявлението има своя собствена имплицитна транзакция, която гарантира това. Можете лесно да го докажете на себе си, като прегледате плановете за изпълнение за всеки израз или като определите времето за изпълнение с помощта на set statistics time on; . Има фиксирана цена, свързана с „настройването“ и „събарянето“ на контекста за всяко отделно вмъкване и втората заявка трябва да плати тази неустойка пет пъти, докато първата я плаща само веднъж.

Методът на списъка не само е по-ефективен, но можете също да го използвате за изграждане на производна таблица:

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

Този формат заобикаля ограничението от 1000 стойности и ви позволява да се присъедините и да филтрирате списъка си, преди да бъде вмъкнат. Може също така да забележите, че не сме обвързани с insert изявление изобщо! Като de facto таблица, тази конструкция може да се използва навсякъде, където би била валидна препратка към таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да намеря символи Unicode/не-ASCII в поле NTEXT в таблица на SQL Server 2005?

  2. Грешка 109 на SQL Server:Има повече колони в израза INSERT, отколкото стойностите, посочени в клаузата VALUES

  3. Определете дали SP параметърът има стойност по подразбиране в T-SQL

  4. Как да зададете име на първичен ключ в EF-Code-First

  5. Избройте всички SQL колони с максимална дължина И най-голяма дължина