Например, у нас есть три таблицы (Post, PostTag и Tag):
Post
=======
id
title
body
PostTag
=======
id
post_id
tag_id
Tag
=======
id
name
normalized_name
Нам нужно посчитать, сколько сообщений содержится в теге "спорт". Запрос подсчета медленный (у нас несколько миллионов строк).
Для решения мы должны сохранить счет в базе данных (после добавления тегов счет обновляется с n + 1, после удаления n - 1).
Теги часто добавляются / удаляются сообществом / модерацией.
Мои мысли:
Создать собственную сводную таблицу для хранения количества тегов:
PostTagStat
========
tag_id
frequency
Индекс создается по частоте столбца.
Но было бы лучше, если бы мы добавили новый столбец в таблицу тегов для сохранения запроса INNER JOIN, например:
Tag
========
id
name
normalized_name
frequency
Что ты думаешь? Собственная таблица или новый столбец? И почему?