Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa manfaat menggunakan sintaks Konstruktor Baris dalam pernyataan penyisipan T-Sql?

Ya, ada perbedaan performa yang cukup besar antara:

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

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

dan

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

Fakta bahwa setiap insert pernyataan memiliki transaksi implisit sendiri menjamin ini. Anda dapat membuktikannya sendiri dengan mudah dengan melihat rencana eksekusi untuk setiap pernyataan atau dengan mengatur waktu eksekusi menggunakan set statistics time on; . Ada biaya tetap yang terkait dengan "menyiapkan" dan "meruntuhkan" konteks untuk setiap sisipan individu dan kueri kedua harus membayar penalti ini lima kali sedangkan yang pertama hanya membayarnya sekali.

Tidak hanya metode daftar yang lebih efisien tetapi Anda juga dapat menggunakannya untuk membuat tabel turunan:

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

Format ini mengatasi batasan nilai 1.000 dan memungkinkan Anda untuk bergabung dan memfilter daftar Anda sebelum dimasukkan. Orang mungkin juga memperhatikan bahwa kita tidak terikat pada insert pernyataan sama sekali! Sebagai tabel de facto, konstruk ini dapat digunakan di mana saja referensi tabel akan valid.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada Fungsi Regresi Linier di SQL Server?

  2. Cara menggabungkan string dalam SQL

  3. Temukan HANYA Huruf Kapital dalam kata melalui kueri IN SQL Server

  4. SQL Server Subquery mengembalikan lebih dari 1 nilai. Ini tidak diizinkan ketika subquery mengikuti =, !=, <, <=,>,>=

  5. Dapatkan tanggal pembuatan indeks dari SQL server