Если вы создаете и / или уничтожаете таблицы программным способом во время обычной повседневной работы вашего приложения, я бы сказал, что это очень плохой признак того, что в структуре базы данных что-то не так.
Системы баз данных могут обрабатывать таблицы с таким количеством строк. Для выполнения сколько-нибудь значимых запросов по этому количеству строк вам действительно нужно тщательно и бережно выбирать индексы. Я имею в виду, что вы действительно должны хорошо знать, как будет запрашиваться таблица.
Тем не менее, я осмелюсь сказать, что это было бы гораздо менее сложно реализовать, чем подход, предложенный вами для создания новых таблиц произвольно на основе только идентификаторов или номеров. И чем меньше сложностей, тем больше простота обслуживания и меньше шансов на то, что вы будете вносить неприятные ошибки, которые трудно отлаживать.
Если вы действительно хотите разбить несколько таблиц, я предлагаю вам посмотреть, как другие люди разбивают данные . Вместо того, чтобы создавать таблицы динамически, создайте фиксированное количество таблиц с самого начала, основываясь на том, сколько, по вашему мнению, вам, вероятно, понадобится, и распределите записи по этим таблицам, основываясь не на некоторой произвольной вещи, такой как количество записей в таблицах на время, но для чего-то предсказуемого - в качестве примера приводится почтовый индекс пользователя, или категория, в которой находится документ, или доменное имя или страна пользователя, который его создал, или что-то логичное, что вы можете использовать, чтобы легко определить, где находится запись в конечном итоге, и это будет разумно распространяться.
Одним из преимуществ разделения данных таким образом, когда вы создаете все разделы для начала, является то, что если вам потребуется в будущем, относительно легко перейти на несколько серверов баз данных. Если вы создаете и уничтожаете таблицы динамически, это сделает это менее достижимым.