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

Khuyến nghị sử dụng bảng tạm thời hoặc biến bảng trong Khung thực thể 4. Cập nhật khung Thực thể hiệu suất

Đối với khối lượng dữ liệu như 300k hàng, tôi sẽ quên EF. Tôi sẽ làm điều này bằng cách có một bảng như:

BatchId  RowId

Trong đó RowId là PK của hàng mà chúng tôi muốn cập nhật và BatchId chỉ đề cập đến "chạy" 300 nghìn hàng này (để cho phép nhiều hàng cùng một lúc, v.v.).

Tôi sẽ tạo một BatchId mới (đây có thể là bất kỳ thứ gì độc đáo -Guid nhảy vọt trong tâm trí) và sử dụng SqlBulkCopy để chèn các bản ghi vào bảng này, tức là

100034   17
100034   22
...
100034   134556

Sau đó, tôi sẽ sử dụng một mầm simgle để tham gia và cập nhật (và xóa lô khỏi bảng).

SqlBulkCopy là cách nhanh nhất để đưa khối lượng dữ liệu này đến máy chủ; bạn sẽ không bị chết đuối trong các chuyến đi khứ hồi. EF là hướng đối tượng:phù hợp với nhiều tình huống - nhưng không phải tình huống này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ghép nối các dòng dữ liệu gửi và nhận trong SQL

  2. Các tháng giữa hai ngày

  3. Triển khai phân trang bằng cách sử dụng OFFSET FETCH NEXT trong SQL Server

  4. Invoke-Sqlcmd:Đã xảy ra lỗi liên quan đến mạng hoặc trường hợp cụ thể khi thiết lập kết nối với SQL Server

  5. Làm phẳng các khoảng thời gian giao nhau