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

SQL Menyisipkan satu baris atau beberapa baris data?

Sebenarnya, cara Anda menulisnya, opsi pertama Anda akan lebih cepat.

  1. Contoh kedua Anda memiliki masalah di dalamnya. Anda melakukan sql =+ sql + dll. Ini akan menyebabkan objek string baru dibuat untuk setiap iterasi loop. (Lihat kelas StringBuilder). Secara teknis, Anda juga akan membuat objek string baru pada contoh pertama, tetapi perbedaannya adalah ia tidak harus menyalin semua informasi dari opsi string sebelumnya.

  2. Cara Anda mengaturnya, SQL Server harus berpotensi mengevaluasi permintaan besar ketika Anda akhirnya mengirimnya yang pasti akan membutuhkan waktu untuk mencari tahu apa yang seharusnya dilakukan. Saya harus menyatakan, ini tergantung pada seberapa besar jumlah sisipan yang perlu Anda lakukan. Jika n kecil, Anda mungkin akan baik-baik saja, tetapi seiring bertambahnya masalah Anda hanya akan bertambah buruk.

Sisipan massal lebih cepat daripada yang individual karena cara SQL server menangani transaksi batch. Jika Anda akan memasukkan data dari C# Anda harus mengambil pendekatan pertama dan membungkus katakanlah setiap 500 sisipan ke dalam transaksi dan komit, lalu lakukan 500 berikutnya dan seterusnya. Ini juga memiliki keuntungan bahwa jika sebuah batch gagal, Anda dapat menjebaknya dan mencari tahu apa yang salah dan memasukkannya kembali hanya itu. Ada cara lain untuk melakukannya, tetapi itu pasti akan menjadi peningkatan dari dua contoh yang diberikan.

var iCounter = 0;
foreach (Employee item in employees)
{

   if (iCounter == 0)
  {
    cmd.BeginTransaction;
  }
  string sql = @"INSERT INTO Mytable (id, name, salary) 
    values ('@id', '@name', '@salary')";
  // replace @par with values
  cmd.CommandText = sql; // cmd is IDbCommand
  cmd.ExecuteNonQuery();
  iCounter ++;
  if(iCounter >= 500)
  {
     cmd.CommitTransaction;
     iCounter = 0;
  }
}

if(iCounter > 0)
   cmd.CommitTransaction;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sintaks untuk baris tunggal MERGE/upsert di SQL Server

  2. Mengatasi batas kolom maksimum SQL Server 1024 dan ukuran catatan 8kb

  3. Kesalahan dalam SQL Server saat mengimpor file CSV meskipun varchar(MAX) digunakan untuk setiap kolom

  4. Perbedaan antara FOR dan AFTER trigger?

  5. SQL Server 2016 :sys.dm_exec_function_stats