使用where语句的LINQ非常慢

时间:2016-06-21 04:40:47

标签: c# entity-framework linq

我有一个看起来像这样的LINQ:

var something = db.Calculations
            .Where(x => x.CalculationDate.Date == justTheDate 
            && x.CalculationID == externalObject.CalculationID 
            && x.CalculationDate >= minDate 
            && x.CalculationDate <= maxDate).GroupBy(x => 
            (int)x.CalculationDate.TimeOfDay.TotalMinutes);

其中justTheDateminDatemaxDate(日期时间)和externalObject.CalculationID(字符串)都是在范围内找到的变量。

当我枚举它(使用something.Select(x=>x.Last()).ToList()之类的东西)时,大约需要15秒。有很多数据,但与生产中预期的数据不相近。

无论如何要让这个查询更快?

1 个答案:

答案 0 :(得分:4)

您可以使用此代码获取生成的SQL查询:

var objectQuery = something as System.Data.Objects.ObjectQuery;
string strQuery = objectQuery.ToTraceString();

获取查询后,您可以直接在数据库上执行它。如果它再次变慢,你应该为where子句列创建一个合适的索引。