我有一个如下所示的 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);
其中 justTheDate
、minDate
、maxDate
(日期时间)和 externalObject.CalculationID
(字符串)都是变量范围内发现。
当我枚举它时(使用诸如 something.Select(x=>x.Last()).ToList()
之类的东西),大约需要 15 秒。有很多数据,但与生产中的预期不符。
有什么办法可以让这个查询更快吗?
最佳答案
您可以使用此代码来获取生成的 SQL 查询:
var objectQuery = something as System.Data.Objects.ObjectQuery;
string strQuery = objectQuery.ToTraceString();
获取查询后,您可以直接在数据库上执行它。如果它再次变慢,您应该为您的 where 子句列创建一个适当的索引。
关于c# - 使用 where 语句的 LINQ 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935713/