GroupBy()运行速度极慢

时间:2016-08-16 22:00:33

标签: sql-server entity-framework linq group-by

我的数据库中有一个表,其中有一个日期字段(VisitDate)。当我执行以下SQL查询时,我会在 1秒

中收到结果
select year(VisitDate), month(visitDate) 
from GABrowser 
group by year(VisitDate), month(visitDate)

但是,在我的ASP.Net代码(在Visual Basic中)中,以下操作需要12秒才能执行:

Dim stats = db.GABrowsers.GroupBy(Function(s) New With {s.VisitDate.Value.Year, s.VisitDate.Value.Month})

'(Takes 12 seconds to enter in the For loop)
For Each stat In stats 

Next

我不知道为什么需要这么长时间。它导致我的网页加载速度非常慢。

1 个答案:

答案 0 :(得分:3)

SQL查询和LINQ查询不等效。

SQL查询仅返回year(VisitDate)month(visitDate)。 LINQ中的GroupBy不同,它返回按分组条件分组的完整实体

在LINQ结果中,您会看到db.GABrowserss.VisitDate.Value.Year组中的s.VisitDate.Value.Month个实体。您将看到LINQ语句生成的SQL查询比第一个SQL查询宽得多(在字段中)。

除此之外(更大的SQL结果集),EF需要时间来处理数据库中的数据并实现实体对象。