Yaklaşık 60.000 satır içeren bir veritabanı tablomuz var (SQL Server 2012 Express'te çalışıyor). Eski satırları temizlemek için aşağıdaki kodu kullanıyorumÇok sayıda kaydı silmek çok uzun bir süre alır
: (tablolardaki kayıtların% 90 veya daha fazla siliniyor ~) silinen satır sayısı büyük olduğunda
//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);
}
operasyon son derece alır uzun. Bu işlemi nispeten güçlü bir makinede (Intel I5 masaüstü) bitirmek yaklaşık 30 dakika sürer.
Bu normal bir davranış gibi görünüyor mu?
İşlem süresinin kısaltılması için neler yapabileceğimiz hakkında herhangi bir fikir var mı? Sen
EntityFramework.Extended
bakmak gerekir
sayesinde
DeleteAllOnSubmit'e bakın, bu yardımcı olabilir. – DavidB
Yaptığınız AFAIK 60.000'den fazla veritabanını çalıştıran komutları siliyor. Bunun yerine, yalnızca bir komut veya birkaç yüz komuttan oluşan bir toplu iş çalıştırırsanız, bu performans sorununa sahip olmazsınız. – Renan
Entity Framework bu tür şeylerde harika değildir. Zaman damgasında ilettiğiniz saklı bir yordam oluşturmak en iyisi olabilir ve tüm kayıtları bu şekilde siler. – Belogix