【发布时间】:2015-12-03 09:42:12
【问题描述】:
我在 vb.net 中有以下 Linq 查询,3000 条记录需要 2-3 分钟。我想优化它。请给我建议
Dim sessionsEligibleForDeletion As List(Of Integer) = Nothing
以下查询需要很长时间。
sessionsEligibleForDeletion =
(From row In dt.AsEnumerable()
Group row By sessionID = row.Field(Of Int32)("sessionID") Into SessionGroup = Group
Select New With
{
sessionID,
.eligibleForDeletion = SessionGroup.Count(Function(r) r.Field(Of Int32)("sessionID")) > totalCriterias - 1
}).
Where(Function(rr) rr.eligibleForDeletion = True).
Select(Function(rr) rr.sessionID).ToList()
【问题讨论】:
-
数据库查询计划是什么样的? (即,使用合理的索引,查询可能是合理的。)
-
什么是
distinctReportNo?此外,这是 Linq-To-DataTable,它是 Linq-To-Objects 的子集。如果您可以在数据库中进行过滤,那可能是最有效的方法。 -
我已经更新了问题请看一下。它与数据库无关。它仅与数据行和数据表有关
-
你想达到什么目的?首先从表中选择所有reportNo,然后选择此列表中具有reportNo 的所有行。这是所有行,因为您使用的是相同的源。所以前两个查询已经没有意义了。
-
是的,你是对的..但是 sessionEligibleForDeletion 获取字段的最后一个查询需要时间...想要优化它。
标签: vb.net performance linq optimization