【发布时间】:2014-09-16 11:44:18
【问题描述】:
我有一些查询 EF 实体的代码,它需要 1.5-1.7 秒。我不应该使用 linq 或 lambda 来产生这些计算吗?也许是一个观点?或者,如果有人可以提供更有效的解决方案,我将不胜感激!当我在 MVC 视图中引用 CurrentMonthBookedDollars 时,会发生很大的延迟:
string[] IgnoreBDOs = { "", ".", ",", "00", "092", "120", "zz", "zzz", "zzzz", "yyy" };
IQueryable<LOAN> Production
{
get
{
return Db.LOAN.Where(n => IgnoreBDOs.Contains(n.TEAM.BDO.ToLower()) == false
&& n.LOAN_TYPE.Length > 0);
}
}
public decimal CurrentMonthBookedDollars
{
get
{
return Production
.Where(p => p.WORKFLOW.NOTE_DATE.HasValue
&& p.WORKFLOW.NOTE_DATE.Value.Year == DateTime.Today.Year
&& p.WORKFLOW.NOTE_DATE.Value.Month == DateTime.Today.Month)
.Select(p => p.LOAN_AMT ?? 0)
.DefaultIfEmpty()
.Sum(amt => amt);
}
}
*编辑:当我在 SQL 数据库上运行分析器时,我还想提到 CurrentMonthBookedDollars 结果为 39,576 次读取。
【问题讨论】:
-
您的替代方案是什么?你有没有试过,看看它是否会更快?
-
在 SSMS 中重新运行查询并开启 Include Actual Execution Path 并查看是否可以进行 SQL 优化(例如添加索引)。
标签: c# sql linq entity-framework lambda