Mysql mysql и поиск по битовой маске

grey109

Новичок
Привет всем!

Есть битовой поле, например, b'0011'. Храню в нем параметры профилей пользователей.

Туплю, не могу понять, как выбрать mysql-запросом все строки где второй бит равен 0? Нашел в инете километровые примеры запросов, которые решают эту задачу, но думаю должно как-то решаться проще.


И сразу еще задам вопрос: на нескольких сайтах видел предостережения от работы с битами в mysql. Типа в будущем это может создать какие-то трудности. Пояснений данному факту не нашел, потому спрошу тут - это действительно так?

Спасибо!
 

AnrDaemon

Продвинутый новичок
Протупил ты раньше - когда решил хранить данные в битах.

Да, это действительно так. Индексы по битам не строятся.
 

grey109

Новичок
Про индексы я в курсе, но их отсутствие в данной задаче для меня вообще не играет роли - профилей пользователей будет немного, выборки по ним будут делаться редко.

А вот если подскажите на будущее как лучше хранить параметры пользователей - буду благодарен. Раньше я хранил каждую опцию в отдельном поле БД - получалось как-то громоздко, сейчас попробовал хранить в битовом формате, получается компактно, но есть некоторые нюансы.

Как правильно?
 

AnrDaemon

Продвинутый новичок
Если предполагается поиск по этим полям - хранить отдельно. ЕСТЕСТВЕННО. Хотя если поиск предполагается ТОЛЬКО по булевому полю, всё равно fullscan будет, ибо кардинальность никакая.
Если поиск будет только комбинированный, ситуацию можно немного улучшить, сохраняя несистемные данные в виде JSON.
 
Сверху