我在使用MySQL数据库引擎的C#代码中使用此查询。 此查询过滤器记录从8000到9000,需要10到14分钟。 我可以在查询中缩短这段时间吗?我正在使用Linq to SQL。
if (!String.IsNullOrWhiteSpace(Request["FilterReport"]))
Listquests = Listquests.Where(q => q.Reports.Any(r => r.ReportType.Id == int.Parse(Request["FilterReport"].Split('-')[0]) && r.Language.Id == int.Parse(Request["FilterReport"].Split('-')[1]))).ToList();
Listquests = Listquests.OrderByDescending(q => q.Date).ToList();
答案 0 :(得分:0)
我建议如下:
if (!String.IsNullOrWhiteSpace(Request["FilterReport"]))
{
string[] reportInfo = Request["FilterReport"].Split('-');
int reportId = int.Parse(reportInfo[0]);
int languageId = int.Parse(reportInfo[1]);
Listquests = Listquests.Where(q => q.Reports.Any(r => r.ReportType.Id == reportId && r.Language.Id == languageId)).OrderByDescending(q => q.Date).ToList();
}
它只调用了一次“ToList()”,并且它还预先定义了reportId和languageIds,但是我不认为预定义有所不同,因为你的例子和imin都会被编译成类似的IL最终。但是,只调用一次“ToList()”应该会有所帮助。
答案 1 :(得分:0)
如果可能存在某种关系,那么这可能会更快。通过加入或小组来进行报告的导航收集。