2017-01-23 2 views
0

У меня есть база данных с сотнями записей (конечно, это не огромная база данных, но я бы хотел сохранить ее таким образом). Я хочу, чтобы пользователи создали как можно больше групп из записей (поместите любую запись в любую из этих групп). Моя идея состояла в том, чтобы использовать двоичное число в каждой строке, где биты будут указывать, является ли запись частью соответствующей (мощности 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, которые имеют ограничения в максимальном количестве символов. Буду благодарен за любой совет.

+1

Ну позволяет сказать, что есть 100000 групп, что бинарная идея не будет работать это будет – RiggsFolly

+3

делать это правильно и создать перекрестную таблицу ссылок для каждого пользователя их группам и другим пользователям для этой группы – RiggsFolly

+0

Правильно проиндексированная таблица перекрестных ссылок будет намного более эффективной для выбора –

ответ

0

Я бы рекомендовал матрицу записей и групп, мета-таблицу.

Один стол со своими записями (1: банан, 2: оранжевый, 3: цветок и т. Д.) Один стол с созданными пользователем группами (100: group1, 200: groupfruits, 300: groupplants, 400: groupwhatever).

Одна таблица, которая содержит связи между группой и записей:

group_id | record_id 
100  | 1 
100  | 3 
200  | 1 
200  | 2 
300  | 3 
400  | 1 
400  | 2 
400  | 3 
+0

Да, я думал об этом так, но мне было интересно, стоит ли создавать таблицу с десятками тысяч строк (сто групп с несколькими сотнями записей). Я совершенно новичок, когда дело доходит до времени выполнения и т. Д., Поэтому это может быть не проблема. –

+0

Тысячи строк не должны быть проблемой, если вы правильно индексируете таблицу и используете правильные соединения. Я использую такие мета/сводные таблицы с миллионами записей без каких-либо проблем. – antesoles

Смежные вопросы