約 5000 の Plus レコードをフェッチするこの LINQ to Entity クエリがあります。返されるレコードが多いほど、クエリを実行して結果を返すのに時間がかかることに気付きました。
lstUserAssignments = context.UserAssessments.Where(a=>a.UserID == UserID && a.CourseID == ClassID && a.ProductID == a.ProductID && a.AppID == ApplicationID && a.IsDeleted == false && a.Score_Percentage >= 0).Select(a=> new UserAssessmentEntity()
{
ApplicationID = a.AppID,
AttemptNo = a.AttemptNo,
CourseID = a.CourseID,
Score_Percentage = (float)(a.Score_Percentage != null ? a.Score_Percentage : 0),
Status = a.Status,
UserAssessmentID = a.UserAssessmentID,
UserID = a.UserID,
UserScore = a.User_Score,
CreatedDateTime = a.CreatedDateTime,
ModifiedDateTime = a.ModifiedDateTime,
TimeSpent=a.UserAssessmentDetails.Sum(i=>i.TimeSpent??0),
InstructorFeedbackText = a.UserAssessmentDetails.FirstOrDefault()!=null?a.UserAssessmentDetails.FirstOrDefault().InstructorFeedbackText:string.Empty
}).ToList();
クエリを簡単にするため。UserAssessment および UserAssessmentDetails テーブルがあります。前者は親、後者は子です。クエリにパフォーマンスの問題があり、TimeSpent と InstructorFeedback の計算に問題があると感じています。誰でも問題に指を向けることができますか?