Не подскажите как наиболее эффективно работать со множествами? Что почитать?
Задача Есть неограниченное число множеств A,B,C..N есть объекты а, b, c ... n
каждый объект может оказаться в нескольких множествах т.е. объект «а» может быть в A,C или может не быть.
Как наиболее эффективно проверить находится ли он в множестве или нет (возможно какое-то побитовое сравнение)? Задача связана с web с тэгированием данных.
как сейчас реализовано: есть в таблице `users` поле tags В нём хранятся тэги вида #a#, #b#, #c# .. Есть зона видимости юзер login_a видит множество #a# и #b#. Чтобы выбрать всех пользователей которые находятся в множестве #a# или #b# поиск идет простым лайком - SELECT * FROM `users` WHERE `tags` LIKE '%#a#%' OR `tags` LIKE '%#b#%'
Соответственно при росте данных и множеств начинает все дико тупить. Естественно немного спасёт нормализация таблиц (создание дополнительных таблиц с группами) или использование full text поиска чем нибуть типа sphinx. Но возможно что-то более правильное придумать чтобы сохранялась таже математическая модель?
Уходить в тип SET с множествами для таблиц не хочется из-за его ограничения на количество множеств.