есть таблица с товарами/объявлениями.
основные параметры - покупка/продажа/обмен/бесплатно
таблицы с товарами от 1 до 10 миллионов записей, записи постоянно удаляются/добавляются, обновляется время у старых записей.
выборка с join по нескольким таблицам:
для формирования страницы выбираем строки у которых время свежее.
(дополнительно могут быть в разрезе разделов/категорий, по городам/регионам, новые/бу и тд.)
класс имеет конструктор, который изначально считает:
1) count с группировкой по покупка/продажа/обмен/бесплатно.
проблема - после 500к строк начинает тормозить, тяжелый
ВОПРОС 1
что предпринять чтоб постоянно не выполнять count ?
2) count с группировкой по подкатегориям текущего раздела (4ступени вложенности).
ВОПРОС 2 проблема и вопрос тотже?
3)
проблема - сложность построения пагинаторв для больших данных, те выборки данных на страницу далеко за первую - пока решена ограничением страниц в 500 и предложением пользователю уточнить параметры.
ВОПРОС 3 как улучшить?
прошу подсказать подходящее решение или направить, как пример - там всегда сумма по подкатегориям : olx (сумма частные/бизнес), avito
пока вижу так:
создать таблицу и складывать ключ/значение в нее
перед запросом проверять эту таблицу и время вставки, если прошло до 10 минут - отдавать пользователю сэти данные, иначе - новый тяжелый запрос
спасибо.
|