分组生成一个巨大的查询

时间:2015-10-13 19:20:17

标签: c# linq

我有以下linq查询,它产生一个非常大的SQL。

        var visits = _db.Visits.AsNoTracking().GroupBy(x => x.City)
            .Select(group => new
            {
                City = group.Key.Code, 
                CityName = group.Key.Name, 
                Count = group.Count()
            }).OrderByDescending(x => x.Count);

因为Visits表有很多列。但是我对Visits表中的一列感兴趣,我正在分组。

所以这会导致性能和查询速度变慢。

如何让它更快?

1 个答案:

答案 0 :(得分:3)

首先选择您需要的数据,这样您使用的数据集就会更小。这应该减少列的数量和查询的大小。

var visits = _db.Visits.AsNoTracking()
             .Select(c=> new   // reduce the initial data set
             { 
                 City= c.City, 
                 Code = c.Code, 
                 Name = c.Name 
             })
             .GroupBy(x => x.City)
             .Select(group => new    // build results
             {
                 City = group.Key.Code, 
                 CityName = group.Key.Name, 
                 Count = group.Count()
             })
             .OrderByDescending(x => x.Count);