我有以下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表中的一列感兴趣,我正在分组。
所以这会导致性能和查询速度变慢。
如何让它更快?
答案 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);