Вход | Регистрация
 
Информационные технологии :: Математика и алгоритмы

Есть ли эффективный индекс по битовой маске?

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.