Linq 到 SQL 父链接删除速度很慢



我们有一个带有自链接的表,需要删除一些行。我在删除行之前删除了链接,但它非常非常慢。由于需要删除数千行,因此我需要一种更快的方法。

我尝试将提交更改移出循环,但它并不快。我已经验证了检索要删除的行的查询不是问题。

public void ClearOldRunStops()
{
    List<RunStop> runStops = db.RunStops.Where(a => a.shiftstarttime < DateFunctions.UtcNow().AddDays(-15) && a.status == RunStopStatus.Deleted.ToString()).ToList();
    for (int counter = 0; counter < runStops.Count; counter++)
    {
        //remove any RunStop self-links before row deletion
        for (int counter2 = 0; counter2 < runStops[counter].RunStops.Count; counter2++)
            runStops[counter].RunStops[counter2].runstopid = null;
        db.RunStops.DeleteOnSubmit(runStops[counter]);
        db.SubmitChanges();
    }
}

我最后找到了它,runstopid 需要一个索引,否则它会为每个父链接删除进行表扫描。

最新更新