【发布时间】:2018-07-09 10:16:39
【问题描述】:
我有一个表,其中包含任何特定月份的超过 200,000 条记录。
从表中获取记录不是问题,它按预期工作,但搜索记录显示性能非常慢
var listEmpShiftDetails =ctx.tblTO_ShiftSchedule
.Where(m => m.CompanyId == companyId &&
m.ShiftDate >= fromdate &&
m.ShiftDate <= todate)
.Select(m => m).ToList();
从数据库中获取的记录大约:200 000
var data = (from a in ctx.tblEmployee
join b in ctx.tblTO_Entry on a.Id equals b.EmployeeId
where a.CompanyId == companyId && b.CompanyId == companyId &&
(b.Entry_Date >= fromDate && b.Entry_Date <= toDate)
select new { a, b }).ToList();
*ote: 下面的代码中没有调用数据库。所有数据都在上面获取
Linq Query 逐条获取记录
foreach (var item in data) // Data consist of employee details 3k Records
{
if (listEmpShiftDetails
.Any(m => m.EmployeeId == item.a.Id &&
m.ShiftDate == item.b.Entry_Date))
{
var shiftDetails = listEmpShiftDetails
.Where(m => m.EmployeeId == item.a.Id &&
m.ShiftDate ==item.b.Entry_Date)
.Select(m => m)
.FirstOrDefault();
//Other Calculations
}
}
Above 2 Lines 执行时间过长,下面是 Visual Studio 的输出。如何提高性能?
分析器输出
【问题讨论】:
-
您正在执行相同的查询两次。只做一次。
-
“20 万唱片”???
-
200,000 条记录
-
您是否需要第一行 - 只需检查第二行返回任何内容的结果。
-
@Nilesh - 您应该向我们展示您的完整代码。我们应该了解如何从数据库中检索所有数据以及如何准备这些数据。那么我们可以给你一个正确的答案。
标签: c# .net asp.net-mvc performance linq