Здравствуйте. Для решения одной проблемы подошло бы создание большого количества таблиц. Насколько это ужасно? Т. Е. Например, для каждого пользователя создавать таблицу.
Про большое количество таблиц я понял. Я не понял, какая задача требует такое количество таблиц. А вдруг смогут предложить решение оптимальней, в обход пятиста таблицам?
Например, из этого:
> Т. Е. Например, для каждого пользователя создавать таблицу.
можно предположить, что у каждого пользователя будет свой уникальный набор свойств ( столбцов ). Но опять же, это решается не пачкой в 500 таблиц для каждого, а одной для всех, причем в три столбца. Т.е. если смысл в постановке задачи - как mysql себя поведет, при пятиста таблицах? Опять же, мало данных. Насколько большие таблицы? Сколько данных в каждой? Могу предположить - что поведет себя вполне обычным образом.
@comAT0ZzКак сделать выборку одной случайной записи MySQL? Задавался этим вопросом. Но дело в том, что выбирать нужно те записи, которые удовлетворяют условию (например, where type=N). Так вот, как вариант вижу создавать для каждого type(N) свою таблицу. Объем данных в таблицах — приличный. При 200 - 500 таблиц на них придется 1,5кк записей.
Что если для N сделать еще один столбец, содержащий сам тип? Всеравно, для предположения вариантов мало данных, нужна сама задача, изначальная ( не про 500 таблиц, а вообще, в проекте ). Если это секрет, то извиняюсь за потраченное на меня время.
Берете NoSQL или posgresql с json (hstore), сохраняете в "строки" любые ключи key1=value1, key2=value2, далее при запросе данных просто фильтруете по ним, если будет медленно то можете сделать по конкретным ключам индексы, либо сделать параметрический поиск (хранить несколько ключ+значение в одной индексированной "колонке")
Так прочвите чутка фантазии. представьте, что вы купили 390 кастрюль. и вам понадобилась кастрюлька эмалированная, объемом 2.5 литра. с короткими ручками и крышкой с отверстием для выпуска пара. Вы ее найдете, но через три дня.
Так и тут. Простой поиск по 500 таблицам - это запрос, включающий в себя 500 таблиц. в приведенном вами примере для сброса паролей всем пользователям у вас будет
Ну пользователи это всего лишь пример :) А на деле — каждая таблица это отдельная категория. В каждой категории есть, например статьи, которые и хранятся в таблицах. Требуется выбирать случайную запись данной категории
я бы делал столбец «категория» и не парился. а случайную запись легко можно реализовать создав в мемкеше, скажем, массив idшников по каждой категории, сделав ему rand() и pop'ать из него по одному элементу пока не кончатся. потом пересоздать массив и перемешать.. и т.д. таким образом вы обязательно покажете все статьи по одному разу. вместо мемкеша можно таблицы в мемори юзать...
Сделайте табличку.
user_id | param_name | param_value |
Если типы данных разные то соответственно таблицу где параметры string/int/float
Если вам нужно их только доставать а не искать группировать или еще что-то то сериализуйте в JSON и храните в текстовом поле