У меня есть набор связанных объектов. Я использую LINQ к группе коллекцию типа объекта по свойству на связанной сущности, а затем делает расчет суммы на собственность другого соответствующего лица:Оптимизация Linq для объектов
Vehicles.GroupBy(v => v.Mechanics.Engine.Size)
.Select(g => g.Sum(s => s.Passengers.Count));
Я пытаюсь сделать столько, сколько возможно через linq для объектов, поскольку в db имеется большое количество записей. Тем не менее, сгенерированный sql включает в себя 9 операторов select и внешнее применение, которое занимает более чем в 5 раз больше, чем выполнение, как запись упрощенного кода sql для достижения того же в одном предложении select.
Как улучшить сгенерированный sql?
Прежде всего, я впечатлен тем, что вы профилировали sql, сгенерированный так много не –
Вы уверены, что это единственный код, который формирует запрос? Вы должны включить сгенерированный sql и упрощенную версию. У вас также может быть проблема [N + 1] (http://stackoverflow.com/questions/97197/what-is-the-n1-selects-issue). Было бы неплохо увидеть ваши определения моделей. Я создал простой запрос, очень похожий на ваш, что привело к 1 довольно простой sql –