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