我有一个Asp.Mvc5
网站,我们有somme性能问题,这是我们的模型:
我们有一个调查,其中包含一个部分列表,每个部分都有一个子部分列表,每个子部分都有一个问题列表。子部分可以存在于几个部分中(我们需要另一个表来存储部分中的子部分的顺序)。
问题有QuestionSubSection,它确定给定子部分中问题的顺序(一个问题可以存在于几个subSecton中)。
我们有一个公司列表,每个公司都有一个答案列表。 我们的网站按照上述模型定义的顺序显示给定公司的答案列表。
在分析代码后,我发现以下行需要2秒才能执行:
foreach(var section in Survey.ordredBy(s => s.Order)
{
foreach(var subSection in section.SebSections.ordredBy(s => s.Order)
{
foreach(var question in subSection .Questions.ordredBy(s => s.Order)
{
//this query cause a perfermance issues
var answer = company.Answers.Where(c => c.QuestionId == questionId);
}
}
}
你建议我解决这个问题? 提前谢谢。
答案 0 :(得分:1)
您在调查中针对每个问题运行一个查询。如果您有很多问题,可能需要一段时间。
相反,在向数据库的一个请求中查询您将需要的所有答案,例如
之类的东西var allAnswers = company.Answers.Where(c => c.SurveyId == surveyId);
希望答案知道(参考)他们的问题是什么,问题知道它们的用途是什么,等等。