Mysql count больших таблиц (laravel)?

Добрый день! Ребят, я много гуглил и насколько я понял, простого решения нет. Индексы не помогают, может вы дадите мне подсказку.
Есть таблица А с некоторыми записями. Их я разбиваю пагинацией по 10 на страницу. К одной записи из таблицы А может быть прикреплено 100к, 400к, 1kk и более записей записей из таблицы B.

Мне нужно выводить счетчик, сколько записей в таблице B прикреплено данных к записи в таблице А.
Сейчас я фильтрую их в том числе по датам, но иногда нужно получить данные за все время. Запрос обрабатывается довольно долго, как можно, максимально ускорить это дело?

У меня есть 2 идеи, загружать страницу без счетчика и асинхронно подгружать счетчик, тогда страница будет быстро грузится, но актуальные данные все равно будут недоступны довольно долго. И другой вариант, по сути тоже самое, ставить запрос в очередь и отдавать данные через веб сокет, но проблема будет такая же как в первом варианте.

Спасибо!
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
aleksejjjj
@aleksejjjj
Третий вариант - добавьте в таблицу A поле count_b и вам не придётся при каждом запросе пересчитывать 10 миллионов строк. Ну это при условии что подобный код у вас реально тормозитA::withCount(['b'])->get();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
foreign keys
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы