|
|
|
Хранение набора чекбоксов в одном поле + нестрогий поиск по ним
|
|||
|---|---|---|---|
|
#18+
Просьба к знатокам, как лучше организовать хранение набора чекбоксов в одном поле mysql с возможностью нестрого (когда есть хотя бы одно совпадение, а не комбинация) поиска по ним. Форма поиска состоит из нескольких форм, которые содержат в общей сложности 63 чекбокса, создавать отдельное поле для каждого в одной таблице не реально. Разносить по дополнительным таблицам - в результате получится поиск из запроса к шести таблицам. Что применить: 1. хранить набор в типе поля SET, возможно ли организовать оптимальный перебор и поиск по такому типу данных? 2. хранить данные в поле int в битовых комбинациях, при поиске искать совпадения комбинаций 3. какие еще есть варианты? Всем заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 22:17:42 |
|
||
|
Хранение набора чекбоксов в одном поле + нестрогий поиск по ним
|
|||
|---|---|---|---|
|
#18+
Можно хранить как SET, BIT или INT. Хранение при этом совершенно одинаковое, различие - только в дефолтном выводе, необходимости явного преобразования и особенностях преобразования неявного. Поиск "хотя бы одного" - вульгарным OR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 09:16:29 |
|
||
|
Хранение набора чекбоксов в одном поле + нестрогий поиск по ним
|
|||
|---|---|---|---|
|
#18+
я так понимаю вопрос касается применимости индексов для такого поля!!! храним мы байт. поиск по маске - where value & 0x04 я могу только сказать по этому вопросу одно. один человек спросил и сам себе ответил. How to kill mysql performance? - use bitwise operations! на это только стоит делать ставку, если это как дополнительный критерий. ну скажем выбираем товары по критериям - это доля процента от общего количества, и тутже выкидываем помеченые битом(ожидаются).. тоесть когда у тебя есть фильтр товаров фильтр1, фильтр2, фильтр три, и формат вывода - скрыть без цены, скрыть в ожидании, скрыть в резерве, скрыть повреждённые итд. тоесть просто найти повреждённые нельзя, или в резервер, но делая поиск по фильтрам, можно дополнительно выкинуть ...вот тут нормаль. храни лучше целым числом, ибо на пхп или подобном языке, не очень кошерно получить из базы строку 0и1 и потом чтото с ней шаманить. пускай целое число будет. (если ты и создаш в базе битовое поле на 7 бит, база один чорт выделить байт для столбца, просто один вечнонулевой бит никогда тебе не покажет, и будет постоянно отрисовывать его и дорисовывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 10:33:16 |
|
||
|
Хранение набора чекбоксов в одном поле + нестрогий поиск по ним
|
|||
|---|---|---|---|
|
#18+
alex564657498765453How to kill mysql performance? - use bitwise operations! При поиске пересечения маски и значения по OR никакие индексы тебе не помогут - один хрен фуллскан. Или шопипецный юнион. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2015, 11:35:35 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38884796&tid=1833548]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 331ms |

| 0 / 0 |
