Недостаток в том, что основная таблица получит миллионы операций чтения (и большого количества записей).
Это означает, что будет много конфликтов блокировок, интенсивного переиндексации и т. Д.
Чтобы немного это смягчить, вы можете рассмотреть возможность разделения «основной таблицы» на ряд не очень основных таблиц.
Скажем, у вас будет одна основная таблица для "Сообщений" (возможно, уточненная с помощью метаданных или подтаблиц для определенных типов сообщений, таких как Sticky, Announcement, Shoutbox, Private ...)
Oneглавная таблица для изображений (возможно, уточнена для gif, jpegs и т. д.)
одна главная таблица для видео ...
Если это пользовательское приложение (и оно не должнобыть «бесконечно настраиваемым», как CMS или платформа Portal) Я думаю, что этот вид разделения приемлем и может обеспечить лучшую производительность (если вы ожидаете иметь большие объемы данных).
Что касается вашего «примера» комментария ... прежде всего, если вы снова сохраните комментарии в одной гигантской таблице, у вас могут возникнуть подобные проблемы, как если бы вы хранили в ней все типы элементов.Предполагая, что это не проблема, вы, очевидно, можете поставить своего рода ссылочный ключ (конечно, вы не можете использовать обычные внешние ключи), который связывает комментарии с их оригинальным элементом.от элемента к комментариям, немного меньше, когда вам нужно перейти от комментариев к исходному элементу.Таким образом, компромисс заключается в том, какие операции будут более частыми для вашей проблемы.