У меня есть 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);
где justTheDate
, minDate
, maxDate
(DateTime) и externalObject.CalculationID
(строка) являются все переменные находятся в области видимости.
Когда я перечисляю его (используя что-то вроде something.Select(x=>x.Last()).ToList()
), он занимает около 15 секунд. Существует много данных, но не близко к тому, что ожидается в производстве.
В любом случае, чтобы сделать запрос более быстрым?
Говоря об EF, LINQ не проблема - это просто синтаксис перечисления. Проблема заключается в базе данных. Сколько у вас записей? Рассмотрите возможность применения индексов к таблице. –
Запустите '.ToString()' на нем, чтобы просмотреть запрос, который он генерирует. Возможно, вы сможете его индексировать. –
Звучит как проблема индекса в базе данных. – prospector