Ich habe eine Datenbanktabelle (auf SQL Server 2012 Express ausgeführt), die ~ 60.000 Zeilen enthält.Löschen einer großen Anzahl von Datensätzen dauert sehr lange
ich den folgenden Code verwende alte Zeilen zu löschen:
//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);
}
Wenn die Anzahl der gelöschten Zeilen groß ist (~ 90% oder mehr der Datensätze in den Tabellen gelöscht werden) nimmt den Betrieb außergewöhnlich lange. Es dauert ungefähr 30 Minuten, um diesen Vorgang auf einer relativ starken Maschine (Intel I5 Desktop) zu beenden.
scheint dies ein normales Verhalten?
irgendwelche Ideen darüber, was ich tun kann, um die Betriebszeit zu reduzieren?
Danke,
Schauen Sie DeleteAllOnSubmit, es kann helfen. – DavidB
AFAIK Was Sie tun, ist 60.000+ Befehle zum Löschen der Datenbank. Wenn Sie stattdessen nur einen Befehl oder mehrere hundert Befehle oder weniger ausführen könnten, hätten Sie dieses Leistungsproblem nicht. – Renan
Entity Framework ist nicht gut in dieser Art von Sache. Es könnte am besten sein, eine gespeicherte Prozedur zu erstellen, die Sie im Zeitstempel übergeben, und löscht alle Datensätze auf diese Weise. – Belogix