Имя: Пароль:
IT
 
Есть ли эффективный индекс по битовой маске?
,
0 Fragster
 
гуру
30.01.20
23:56
http://sqlfiddle.com/#!9/bd5f72/5
в таблице sku (и некоторых других) будет ограничение по тому, на каких фабриках оно выпускается.
вместо того, чтобы создавать связанные таблицы, думаю попробовать битовые маски. Не стреляю ли я сейчас сам себе в колено? фабрик будет до 8 (соответственно, ограничений мускуля хватит с запасом)
Будет ли индекс по маске в таблице sku эффективным или есть более правильные способы?
1 Midrash
 
31.01.20
00:00
(0) Битовая маска чувствительна к содержимому таблиц. Пробовать надо. Переделать всегда можно
2 H A D G E H O G s
 
31.01.20
00:35
(0) Зачем?
3 Midrash
 
31.01.20
00:37
(2) так надо
4 Fragster
 
гуру
31.01.20
08:53
(2) чтобы не делать N таблиц (а их там кроме номенклатуры еще достаточно того, что может относиться к нескольким фабрикам), и чтобы запросы были не джоином, а с условием там, где нужен отбор по фабрике.
5 Сияющий в темноте
 
31.01.20
09:03
Если хочется эффективности,то на кпждый бит отдельное поле.
проверка битов будет идти полным сканированием,этого не избежать.
6 trad
 
31.01.20
09:11
(0) а где там индекс по маске?
7 dezss
 
31.01.20
09:26
А почему бы тогда просто тупо таб часть не добавить в номенклатуру и куда еще там надо?
Ну один фиг заполнять эту маску надо и там, и там. А тут и индекс можно будет сделать по этим полям. Это если дело касается 1С.

Если какая-то другая база, то можно и маску делать, вот только если фабрик в результате будет больше, то геморроя тоже будет больше)
Вообще закладывать какие-то ограничения для масштабирования, считаю довольно неправильным делом. Я в своей работе довольно часто слышал "да там вообще почти ничего не будет, пусть длина кода будет 2", "да этим вообще никто не будет пользоваться, не оптимизируй" и т.п.
8 Fragster
 
гуру
31.01.20
12:33
(6) там нет индекса по маске. Вопрос в том, будет ли он работать как надо :)
9 Fragster
 
гуру
31.01.20
12:35
(7) это не 1с. У мускуля длина поля до 64 бит может быть, при этом фабрик планируется 3, сейчас - две
10 pechkin
 
31.01.20
12:36
битовая маска тут заменяет мастер - детэйл?
11 pechkin
 
31.01.20
12:37
говорят в мускуле есть тип SET
12 Fragster
 
гуру
31.01.20
12:38
(11) set - это когда набор заранее определен (не справочник, а набор флажков, грубо говоря)
13 pechkin
 
31.01.20
12:38
собственно она же и битовая маска
http://htmllab.ru/mysql-type-set/
14 pechkin
 
31.01.20
12:41
только не понятно как ты битовую мкаску противопоставляешь N таблиц, а не N полей
15 Fragster
 
гуру
31.01.20
12:45
(14) ну например кроме номенклатуры, которая может производится на опреленном списке фабрик, есть еще характеристики номенклатуры, номенклатура с которой может производиться на своем списке фабрик, есть агенты, которые могут заказывать со своих фабрик и т.п.
и нужно либо в каждом случае добавить поле и условие в запросе, либо добавить по таблице, добавлять джоины или exist (что породит чтение из второй таблицы), менять данные в транзакциях и т.п.
16 dezss
 
31.01.20
12:56
(15) Да решение-то красивое, но поддерживать его будет тяжело.
Потом надо будет делать, чтобы эти маски были периодическими по номенклатуре и т.п.
17 pechkin
 
31.01.20
13:03
поддерживать конечно следующему программисту все эти маски не повезет