如何使用MySQL在我的C#代码中快速进行过滤查询?

时间:2015-04-21 13:23:36

标签: c# mysql asp.net-mvc linq

我在使用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();

2 个答案:

答案 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)

如果可能存在某种关系,那么这可能会更快。通过加入或小组来进行报告的导航收集。