|
Есть ли эффективный индекс по битовой маске? | ☑ | ||
---|---|---|---|---|
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
|
поддерживать конечно следующему программисту все эти маски не повезет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |