Linq-to-SQL父链接删除速度很慢

时间:2019-01-31 22:39:54

标签: c# linq-to-sql

我们有一个带有自我链接的表,需要删除一些行。我先删除链接,然后再删除行,但这非常慢。由于需要删除数千行,因此我需要一种更快的方法。

我尝试过将SubmitChanges移到循环外,但这并不快。我已经验证查询检索要删除的行不是问题。

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();
    }
}

1 个答案:

答案 0 :(得分:0)

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