Задать вопрос
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 Оценить 3 комментария
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Пригласить эксперта
Ответы на вопрос 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)))
Ответ написан
Ваш ответ на вопрос

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

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