Делаю движок соцсети и нужно решить как размещать в базе данных переписку пользователей. Если сделать одну таблицу для всех, то она получится большая и выборка будет нагружать сервер. А если для каждого пользователя свою таблицу делать, то таблиц будет много. На 10000 пользователей 10000 таблиц. Так вообще можно?)))) Какую структуру лучше сделать?
Наверное лучше будет одной таблицей для часа 1+1, второй 1+n пользователей, ну групповые чаты. Итого 2 таблицы. А выборки делать мелкими запросами и с limit и offset когда нужно посмотреть историю дальше Х сообщений.
Значительно ограничить выборку не получится. Дело не в том, что много сообщений нужно найти, а в том, что их нужно искать в огромной таблице. И искать придётся по всей таблице, ведь сообщения пользователя перемешаны с другими.
прочти как работает бд как работают индексы ключи как оптимизировать поиск как кешировать результаты и т.д
Нет никакой логики в создании и использовании сотен и/или тысяч таблиц. Угробишь быстрее себя) Нужна единая точка входа и выхода, скажем так. Никакой оптимизации и выхлопа ты не получишь, создав кучу страниц. Подумай, что их тоже как то обработать надо на стороне сервера и понять, к какой обращаться .. Это нонсенс в общем. Снижают нагрузку, оптимизируя запросы, а также путем "наращивания" параметров железа и прч. прч. прч. К тому же можно хранить месседжи юзеров вообще на отдельном сервере. В наше время про это кучу информации написано. Грубо говоря тебе нужен чат.
дорости сначала до таких нагрузок, о которых говоришь. к тому времени, у тебя будет команда разрабов. у них и спросишь, как решить проблему большой нагрузки
сто таблиц или одна никак не влияет на то, влезают ли данные в оперативку, и простроен ли индекс по полям выборки