Сообщение Re: Тормоза с запросом от 06.11.2023 14:30
Изменено 07.11.2023 14:29 VladD2
Re: Тормоза с запросом
Здравствуйте, merge!
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо сделать так, чтобы они возвращали не bool, а IQueriable<Car>. Тогда SQL-запрос будет формироваться правильно.
M>Есть вот такой код вполне обычный.
M>Стал метод сильно тормозить. Смотрю в профайлере и вижу что идет запрос без условий, а просто
M>
M>и потом получается накладывается фильтр.
M>То есть причина тормоза понятна. Непонятно, почему фильтр не накладывается? я думал, что до ToList\ToArray запрос собирается для базы.
M>
M>И что самое интересное если сделать простой switch то работает всё шустро и в разы быстрее.
M>то есть просто такой код делаем
M>
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо сделать так, чтобы они возвращали не bool, а IQueriable<Car>. Тогда SQL-запрос будет формироваться правильно.
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>
Re: Тормоза с запросом
Здравствуйте, merge!
M>Стал метод сильно тормозить. Смотрю в профайлере и вижу что идет запрос без условий, а просто
M>...
M>И что самое интересное если сделать простой switch то работает всё шустро и в разы быстрее.
M>то есть просто такой код делаем
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо сделать так, чтобы они возвращали не bool, а IQueriable<Car>. Тогда SQL-запрос будет формироваться правильно.
M>Стал метод сильно тормозить. Смотрю в профайлере и вижу что идет запрос без условий, а просто
M>...
M>И что самое интересное если сделать простой switch то работает всё шустро и в разы быстрее.
M>то есть просто такой код делаем
Мне кажется, что вы не используете IQueriable в функциях CarSelectorCommon и CarSelectorLegal. Надо сделать так, чтобы они возвращали не bool, а IQueriable<Car>. Тогда SQL-запрос будет формироваться правильно.