У меня есть база данных с сотнями записей (конечно, это не огромная база данных, но я бы хотел сохранить ее таким образом). Я хочу, чтобы пользователи создали как можно больше групп из записей (поместите любую запись в любую из этих групп). Моя идея состояла в том, чтобы использовать двоичное число в каждой строке, где биты будут указывать, является ли запись частью соответствующей (мощности 2) группы или нет. Say есть 8 групп, поэтому 8 бит:Оптимизация MySQL сотен записей, объединенных в сотни групп
banana | ... | 00010011 // banana is in group 0,1 and 4
orange | ... | 00010000 // orange is in group 4 only
flower | ... | 11111111 // flower is member of every group
Это очень маленький и удобный, простой в обращении в ИНЕКЕ - однако, это не может продолжаться вечно, например, для изменения битов я использую функции bindec()/decbin() PHP, которые имеют ограничения в максимальном количестве символов. Буду благодарен за любой совет.
Ну позволяет сказать, что есть 100000 групп, что бинарная идея не будет работать это будет – RiggsFolly
делать это правильно и создать перекрестную таблицу ссылок для каждого пользователя их группам и другим пользователям для этой группы – RiggsFolly
Правильно проиндексированная таблица перекрестных ссылок будет намного более эффективной для выбора –