Динамическое создание новых таблиц в базе данных - это хорошо известный антипаттерн .
С одной стороны, это фактически усложняет кодирование, так как вам нужно учитывать динамические имена таблиц вquery.
Во-вторых, и, что еще важнее, это может быть крайне пагубно для производительности БД.В зависимости от того, какой механизм хранения вы используете, при каждом запросе к таблице MySQL необходимо открывать от 1 (InnoDB) до 3 (MyISAM) файлов на диске.Это создаст большую нагрузку на вашу файловую систему, когда вам потребуется запросить много таблиц за короткое время.
С другой стороны, если у вас есть все данные в одной таблице, MySQL попытается загрузить их впамяти, когда вы запрашиваете ее в первый раз, и все последующие чтения будут использовать доступ к памяти, а не к диску, что значительно ускоряет процесс.