Shatoidil
@Shatoidil

LINQ и большая таблица, как решить проблему с Count?

Не могe решить проблему с подсчетом размера коллекции. Есть таблица на сайте с фильтрами, там выводиться 10 записей.
data = dc.books.OrderBy(x => x.id).Where(x =>
                                     (market_id == 0 || x.market_id != 0 && x.market_id == market_id)
                                     && (name == null || x.name != null && (x.name.StartsWith(name)))
                                     && (author == null || x.author != null && (x.author.StartsWith(author)))
                                     ).Skip(param.Start).Take(10).ToList();


Все быстро и хорошо работает. Ну мне нужно подсчитать размер полученной коллекции.



count = db.books.Count(x =>
                    (market_id == 0 || x.market_id != 0 && x.market_id == market_id)
                    && (name == null || x.name != null && (x.name.StartsWith(name)))


При одном условии все работает быстро, но стоит мне добавить два других условия, как все вешается. База на Mysql ~ 500 000. И вообще какой оптимальный способ решения этой задачи при больших таблицах? Как мне решить эту задачу , пожалуйста помогите.
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
Может AsNoTracking ускорит выполнение запроса
count = db.books.AsNoTracking().Count(x =>
                    (market_id == 0 || x.market_id != 0 && x.market_id == market_id)
                    && (name == null || x.name != null && (x.name.StartsWith(name)))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы