【发布时间】:2021-09-27 23:02:58
【问题描述】:
我正在尝试创建一个需要多个数据的图表。这是存储库中的代码:
var resultdb = await _dbContext.TimeSheetElements
.Where(t => t.UserId == userId &&
t.Date.Month == month &&
t.Date.Year == year)
.GroupBy(t => t.Date)
.Select(pc =>
new ShowPointingChartViewModel
{
Day = pc.First().Date.DayOfWeek.ToString(),
Date = pc.First().Date.ToString(),
NormalHours = pc.Where(p => p.IsGuard == false && !taskType.Contains(p.UserTask.Type)).Sum(p => p.Duration),
OutOfBuisnessHours = pc.Where(p => p.IsGuard == true).Sum(p => p.Duration),
Holidays = pc.Where(p => p.UserTask.Type == "Holiday").Sum(p => p.Duration),
PublicHolidays = pc.Where(p => p.UserTask.Type == "Public holiday").Sum(p => p.Duration),
Illness = pc.Where(p => p.UserTask.Type == "Illness").Sum(p => p.Duration),
GuardFees = pc.Count(p => p.UserTask.Type == "Night Fees"),
Total = pc.Where(p=>p.UserTask.Type != "Night Fees").Sum(p => p.Duration)
})
.ToList();
这需要很长时间才能执行(结果是正确的),所以我问是否有可能的方法来减少响应时间。
【问题讨论】:
-
对此我们无话可说。分析您的查询。
-
你能看到这产生的原始 SQL 吗?它更有可能是导致您的性能问题的实际查询。
-
TimeSheetElements 表中大约有多少条记录?应该为 UserTaskId、UserId 和 Date 列建立索引以提高性能。
标签: c# .net-core optimization lambda