Tôi có bảng cơ sở dữ liệu (chạy trên SQL Server 2012 Express) chứa ~ 60.000 hàng.Xóa một số lượng lớn bản ghi mất một thời gian RẤT NHIỀU
Tôi đang sử dụng đoạn mã sau để thanh trừng hàng cũ:
//Deleting CPU measurements older than (oldestAllowedTime)
var allCpuMeasurementsQuery = from curr in msdc.CpuMeasurements where
curr.Timestamp < oldestAllowedTime select curr;
foreach (var cpuMeasurement in allCpuMeasurementsQuery)
{
msdc.CpuMeasurements.Remove(cpuMeasurement);
}
Khi số hàng bị xóa là lớn (~ 90% hoặc nhiều bản ghi trong bảng đang được xóa) các hoạt động diễn đặc biệt Dài. Mất khoảng 30 phút để hoàn thành thao tác này trên một máy tương đối mạnh (máy tính để bàn Intel I5).
điều này có vẻ giống như một hành vi bình thường không?
bất kỳ ý tưởng nào về những gì tôi có thể làm để giảm thời gian hoạt động?
Cảm ơn,
Nhìn vào DeleteAllOnSubmit, điều này có thể hữu ích. – DavidB
AFAIK những gì bạn đang làm đang chạy hơn 60.000 lệnh xóa sẽ lặp lại cơ sở dữ liệu. Thay vào đó, nếu bạn chỉ có thể chạy một lệnh hoặc một vài trăm lệnh hoặc ít hơn, bạn sẽ không gặp phải vấn đề về hiệu suất đó. – Renan
Khuôn khổ thực thể không phải là điều tuyệt vời. Có thể là tốt nhất để tạo một thủ tục lưu sẵn mà bạn vượt qua trong dấu thời gian và nó xóa tất cả các bản ghi theo cách đó. – Belogix