Можно ли как-нибудь улучшить этот запрос, чтобы повысить производительность?
SELECT count(stories.id), count(distinct table_1.table_2_id), count(distinct table_1.id)
FROM stories
INNER JOIN table_1 ON (table_1.id = stories.table_1_id)
INNER JOIN table_2 ON (table_2.id = table_1.table_2_id)
INNER JOIN table_3 ON (table_3.id = table_2.table_3_id)
INNER JOIN table_4 ON (table_4.id = table_3.table_4_id)
INNER JOIN table_5 ON (table_5.id = table_4.table_5_id)
WHERE stories.id in (select s2.id
from stories s2
where s2.published_at between '2015-01-01' and '2020-02-21'
and s2.deleted = false
)
Мне нужна эта информация (количество) для общей суммы панели инструментов.
Все задействованные таблицы равны Inno DB
, у меня есть индексы для всех соединяемых идентификаторов. Моя таблица историй в настоящее время насчитывает более 15 миллионов записей и продолжает расти.
Каков наилучший подход с точки зрения масштабируемости для решения такой ситуации?