Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Phương pháp chính xác để xóa hơn 2100 hàng (theo ID) với Dapper

Một tùy chọn là tạo một bảng tạm thời trên máy chủ và sau đó sử dụng phương tiện tải hàng loạt để tải tất cả các ID vào bảng đó cùng một lúc. Sau đó, sử dụng mệnh đề join, EXISTS hoặc IN để chỉ xóa các bản ghi mà bạn đã tải lên bảng tạm thời của mình.

Tải hàng loạt là một đường dẫn được tối ưu hóa tốt trong SQL Server và nó sẽ rất nhanh.

Ví dụ:

  1. Thực thi câu lệnh CREATE TABLE #RowsToDelete(ID INT PRIMARY KEY)
  2. Sử dụng tải hàng loạt để chèn các khóa vào #RowsToDelete
  3. Thực thi DELETE FROM myTable where Id IN (SELECT ID FROM #RowsToDelete)
  4. Thực thi DROP TABLE #RowsToDelte (bảng cũng sẽ tự động bị xóa nếu bạn đóng phiên)

Ví dụ về mã (Giả sử Dapper):

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. Làm cách nào để bạn thêm một cột NOT NULL vào một bảng lớn trong SQL Server?

  2. SQL Server thoát một gạch dưới

  3. Đặt đối chiếu cơ sở dữ liệu trong Entity Framework Code-First Initializer

  4. Cách ánh xạ nhiều phân vùng thành một nhóm tệp trong SQL Server (T-SQL)

  5. Kích hoạt đăng nhập trong SQL Server