Используйте большой стол. Индексируйте это оптимально. Это не должно доставлять вам хлопот, пока вы не пройдете миллиард строк.
Вот прием для оптимизации использования такой таблицы. Вместо
PRIMARY KEY(id),
INDEX(user_id)
есть
PRIMARY KEY(user_id, id),
INDEX(id)
Поскольку PK "кластеризован" с данными, а данные упорядочены в соответствии с PK, это приводит к тому, что все строки данных одного пользователя сидят рядом друг с другом. В больших таблицах это значительно сокращает число операций ввода-вывода и, следовательно, повышает общую скорость. Кроме того, это уменьшает давление на buffer_pool. (Я предполагаю, что вы используете InnoDB?)
INDEX(id)
достаточно для AUTO_INCREMENT
.
Могут быть и другие предложения, но мне нужно больше деталей. Пожалуйста, укажите SHOW CREATE TABLE
(как оно есть сейчас) и основной SELECTs
. Я, скорее всего, предложу внести дополнительные изменения в индексы, типы данных и формулировки запросов.
(таблицы Dynami c - ошибка, и ваши проблемы в этом направлении только начались.)