我已经使用rojar view在MVC中开发了应用程序。工作正常,但是测试服务器在4秒内运行页面,在生产服务器上需要30-35秒。
服务器上的数据库是不同的坚果代码,服务器上的记录数相同
foreach (var subcategpory in Model.category.RFP_SubCategories)
{
if (subcategpory.RFP_Questions.Any(q => q.SubCategoryId == subcategpory.SubCategoryId))
{
<div class="vendor-block">
<div class="vendor-title border-bottom">
<h6>@subcategpory.SubCategory</h6>
<p>Selected:<span class="selectedQuestion" id="selectedQuestion_@subcategpory.SubCategoryId">0</span></p>
</div>
<ul class="vendor-list">
@if (Model.category.RFP_Questions != null)
{
foreach (var que in subcategpory.RFP_Questions.Where(q => q.SubCategoryId == subcategpory.SubCategoryId))
{
bool IsChecked = Model.category.RFP_SelectedQuestions.Any(sq => sq.QuestionId == que.QuestionId);
}
}
</ul>
</div>
}
}
您能否提出任何解决问题和实际原因的方法。
谢谢, 维沙尔
答案 0 :(得分:0)
我会检查两个数据库上是否有相同的索引,因为可能在测试服务器上创建了一个在实时服务器上缺少的索引。
另一个明显的问题是,由于访问服务器的其他内容,实时服务器可能会有更多的资源争用。这种情况也可以通过使用正确的索引来解决,从而使查询能够快速完成。
我会检查SubCategoryId
和QuestionId
字段是否有适当的索引。
您还可以查看统计信息,并确保它们在实时服务器上是最新的。这个:https://msdn.microsoft.com/en-us/library/ms173804.aspx可能值得一看。
答案 1 :(得分:0)
您可以避免延迟执行。试试这个:
不要直接使用Model.category.RFP_SubCategories
。相反:
var lst=Model.category.RFP_SubCategories.ToList()
并循环使用lst
您也可以更改
foreach (var que in subcategpory.RFP_Questions.Where(q => q.SubCategoryId == subcategpory.SubCategoryId))
{
bool IsChecked = Model.category.RFP_SelectedQuestions.Any(sq => sq.QuestionId == que.QuestionId);
}
到
var qstnsList= subcategpory.RFP_Questions.Where(q => q.SubCategoryId == subcategpory.SubCategoryId).ToList()
如果数据存在,则在qstnsList
循环中使用foreach
。
试试这个并告诉我它是否节省了时间。