У меня есть набор записей приблизительно 1 миллион записей. Я пытаюсь запросить записи, чтобы сообщать месячные цифры.Медленные данные группировки запросов EF по месяцам/годам
Следующий запрос MySQL выполняет примерно 0,3 секунды
SELECT SUM(total), MONTH(create_datetime), YEAR(create_datetime)
FROM orders GROUP BY MONTH(create_datetime), YEAR(create_datetime)
Однако я не могу понять выражение лямбда-рамочный объект, который может выполнять любые вблизи как быстрый
Единственное заявление я пришел с этим фактически работает
var monthlySales = db.Orders
.Select(c => new
{
Total = c.Total,
CreateDateTime = c.CreateDateTime
})
.GroupBy(c => new { c.CreateDateTime.Year, c.CreateDateTime.Month })
.Select(c => new
{
CreateDateTime = c.FirstOrDefault().CreateDateTime,
Total = c.Sum(d => d.Total)
})
.OrderBy(c => c.CreateDateTime)
.ToList();
Но это ужасно медленно.
Как я могу получить этот запрос, чтобы выполнить так быстро, как это делает непосредственно в MySQL
Какова фактическая команда SQL, отправляемая на сервер? Нам нужно понять, является ли скорость проблемой на стороне сервера или на стороне клиента. –