Задать вопрос

Когда имеет смысл делать несколько таблиц с комментариями?

1) Если речь идет о форуме, то есть ли смысл автоматически создавать новую таблицу комментариев для каждой новой темы?
2) Тот же вопрос о статейном сайте, где под каждой статьей будет до 50 комментариев в среднем.
3) Наличие отдельных таблиц ускорит загрузку? Ведь если имеется 100 тем и к каждой оставляется примерно 100 комментариев, то в случае с объединенной таблицей система пробегает 10 000 комментариев, но если отдельные таблицы, то система ищет между 100 таблицами, и получается в 100 раз быстрее?
4) Есть ли разница в скорости пробега по одной таблице или списке таблиц такой же длины?
  • Вопрос задан
  • 983 просмотра
Подписаться 3 Простой 1 комментарий
Решения вопроса 5
longclaps
@longclaps
О, набежали подписанты )
Идея дурацкая и вредная, всем коментам место в одной таблице, и быстрее будет, и сохраннее.
Почитать про индексы даже не советую - бесполезно.
Ответ написан
Комментировать
Melkij
@Melkij
DBA Team для вашего PostgreSQL?
И получается дико неудобно и значительно медленнее в итоге.
Не касаясь лимита на число открытых файловых дескрипторов, кучу internal статистики планировщика и прочих деталей реализации.

Форум. Банальная страница профиля пользователя, достать последние 10 сообщений этого пользователя - как? union all по всем темам с filesort последующим вместо простого index scan по составному ключу даже без необходимости в сортировке?
Статьи. Показать для модерации последние комментарии

А распилить большую таблицу (только на самом деле большую, а не в смешные лям строк) на части - вещь неплохая. Только не так надо пилить. Есть у mysql штатное партицирование.
Ответ написан
Комментировать
1. У вас на форуме 1000 тем, у вас будет 1000 таблиц для каждой темы?
В чем проблема создать просто таблицу комментариев где будут храниться поля
id
user_id
post_id
text
2. Таже самая схема что и в 1 случае выше
3. Как вы хотите потом запросы писать то? У вас проект умрет на поддержке. Если построить продуманный запрос, то со скоростью все будет нормально.
4. На это вопрос не могу дать ответа. Попробуйте создать бд и протестировать. Конечно таблица в 100 000 строк будет обрабатываться медленнее чем 10 000 таблиц в которых 10 записей
Ответ написан
maximw
@maximw
Это вариант шардирования по таблицам.
На ваших числах смысла не имеет. Да, будет быстрее выборка комментариев к одному посту, но едва ли покроет накладные расходы на чтение из разных таблиц, т.к. скорее всего будут запросы не просто "дай комментарии к этому посту", а например "посчитай комментарии к постам на первой странице с группировкой по посту".
Имеет смысл, если у вас очень немного постов, в пределах пары сотен и в них очень много комментариев - миллионы или даже десятки миллионов. Но это не подходит не под один из описанных случаев.
Ответ написан
PravdorubMSK
@PravdorubMSK
система пробегает 10 000 комментариев
куда она пробегает? за пивом?
все комментарии держать в одной таблице
сделать индексы соответствующие
все

ps
10 000
-это ничто. текстовой файл даже тормозить не будет при таком объеме ))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы