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

Metode yang benar untuk menghapus lebih dari 2100 baris (berdasarkan ID) dengan Dapper

Salah satu opsi adalah membuat tabel temp di server dan kemudian menggunakan fasilitas pemuatan massal untuk mengunggah semua ID ke tabel itu sekaligus. Kemudian gunakan klausa join, EXISTS atau IN untuk menghapus hanya record yang Anda upload ke tabel temp Anda.

Pemuatan massal adalah jalur yang dioptimalkan dengan baik di SQL Server dan seharusnya sangat cepat.

Misalnya:

  1. Jalankan pernyataan CREATE TABLE #RowsToDelete(ID INT PRIMARY KEY)
  2. Gunakan beban massal untuk memasukkan kunci ke dalam #RowsToDelete
  3. Jalankan DELETE FROM myTable where Id IN (SELECT ID FROM #RowsToDelete)
  4. Jalankan DROP TABLE #RowsToDelte (tabel juga akan otomatis dihapus jika Anda menutup sesi)

(Asumsikan Dapper) contoh kode:

conn.Open();

var columnName = "ID";

conn.Execute(string.Format("CREATE TABLE #{0}s({0} INT PRIMARY KEY)", columnName));

using (var bulkCopy = new SqlBulkCopy(conn))
{
    bulkCopy.BatchSize = ids.Count;
    bulkCopy.DestinationTableName = string.Format("#{0}s", columnName);

    var table = new DataTable();                    
    table.Columns.Add(columnName, typeof (int));
    bulkCopy.ColumnMappings.Add(columnName, columnName);

    foreach (var id in ids)
    {
        table.Rows.Add(id);
    }

    bulkCopy.WriteToServer(table);
}

//or do other things with your table instead of deleting here
conn.Execute(string.Format(@"DELETE FROM myTable where Id IN 
                                   (SELECT {0} FROM #{0}s", columnName));

conn.Execute(string.Format("DROP TABLE #{0}s", columnName));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hindari duplikat dalam kueri INSERT INTO SELECT di SQL Server

  2. Hindari 4 Kesalahan Umum DBA Ini

  3. Menduplikasi baris berdasarkan nilai kolom di setiap baris

  4. Mengekspor data Di SQL Server sebagai INSERT INTO

  5. Indeks SQL Server:Persyaratan utama, dampak kinerja, dan pertimbangan