Сообщение Re: Тормоза с запросом от 06.11.2023 14:28
Изменено 07.11.2023 14:27 VladD2
Re: Тормоза с запросом
Здравствуйте, merge, Вы писали:
M>Есть вот такой код вполне обычный.
M>Стал метод сильно тормозить. Смотрю в профайлере и вижу что идет запрос без условий, а просто
M>
M>и потом получается накладывается фильтр.
M>То есть причина тормоза понятна. Непонятно, почему фильтр не накладывается? я думал, что до ToList\ToArray запрос собирается для базы.
M>
M>И что самое интересное если сделать простой switch то работает всё шустро и в разы быстрее.
M>то есть просто такой код делаем
M>
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо как-то так:
M>Есть вот такой код вполне обычный.
M>Стал метод сильно тормозить. Смотрю в профайлере и вижу что идет запрос без условий, а просто
M>
M>SELECT * FROM Cars
M>и потом получается накладывается фильтр.
M>То есть причина тормоза понятна. Непонятно, почему фильтр не накладывается? я думал, что до ToList\ToArray запрос собирается для базы.
M>
код | |
M>
| |
M>И что самое интересное если сделать простой switch то работает всё шустро и в разы быстрее.
M>то есть просто такой код делаем
M>
M> var realCar = client.Type switch
M> {
M> Common => dbContext.Cars.FirstOrDefault(car => car.Country == client.Country &&
M> car.Model == client.Model &&
M> car.SomeProperty = Client.SomeProperty),
M> Legal => ...
M> }
M>
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо как-то так:
Re: Тормоза с запросом
Здравствуйте, merge, Вы писали:
M>Есть вот такой код вполне обычный.
M>Стал метод сильно тормозить. Смотрю в профайлере и вижу что идет запрос без условий, а просто
M>
M>и потом получается накладывается фильтр.
M>То есть причина тормоза понятна. Непонятно, почему фильтр не накладывается? я думал, что до ToList\ToArray запрос собирается для базы.
M>...
M>И что самое интересное если сделать простой switch то работает всё шустро и в разы быстрее.
M>то есть просто такой код делаем
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо как-то так:
M>Есть вот такой код вполне обычный.
M>Стал метод сильно тормозить. Смотрю в профайлере и вижу что идет запрос без условий, а просто
M>
M>SELECT * FROM Cars
M>и потом получается накладывается фильтр.
M>То есть причина тормоза понятна. Непонятно, почему фильтр не накладывается? я думал, что до ToList\ToArray запрос собирается для базы.
M>...
M>И что самое интересное если сделать простой switch то работает всё шустро и в разы быстрее.
M>то есть просто такой код делаем
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо как-то так: