Linq性能问题循环中

时间:2015-04-22 22:08:43

标签: performance linq asp.net-mvc-4

我有一个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);
   }
  }
}

你建议我解决这个问题? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您在调查中针对每个问题运行一个查询。如果您有很多问题,可能需要一段时间。

相反,在向数据库的一个请求中查询您将需要的所有答案,例如

之类的东西
var allAnswers = company.Answers.Where(c => c.SurveyId == surveyId);

希望答案知道(参考)他们的问题是什么,问题知道它们的用途是什么,等等。