Mysql подсчитывает строки с помощью фильтров в базе данных с высоким трафиком

Допустим, у вас есть форма поиска с несколькими полями выбора, допустим, пользователь выбирает вариант из раскрывающегося списка , но перед тем, как он отправит данные, мне нужно отобразить количество строк в базе данных.

Допустим, на сайт заходят не менее 300 тыс. (300000) посетителей в день, и пользователь выбирает параметры из формы не менее 40 раз за посещение, что будет означать 12 млн запросов ajax + 12 млн запросов подсчета в базе данных, что кажется многовато.

Вопрос в том, как реализовать быстрый подсчет (с использованием php (Zend Framework) и MySQL), чтобы дополнительные 12 миллионов запросов к базе данных не повлияли на загрузку сайта.

Одним из решений может быть таблица, в которой хранятся все комбинации полей выбора и их соответствующие количества (когда продукт добавляется или удаляется из таблицы продуктов, таблица, хранящая счетчик, будет обновлена). Хотя это не очень хорошая идея, когда для 8 фильтров (параметров выбора) из 43 будет вставлено +8 млн строк, которыми необходимо управлять.

Есть ли другие мысли о том, как этого добиться?

p.s. Мне нужны не примеры кода, а сама идея, которая сработает в этом сценарии.

9
задан Cœur 14 October 2018 в 17:42
поделиться