Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 bitwise and  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Может кто силён в битовых операциях?
Как такое
AND STATUS & (256 | 128) <> 0

Переписать что бы индекс подцепился
15 ноя 18, 16:14    [21735385]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Гадя Петрович
Может кто силён в битовых операциях?
Как такое
AND STATUS & (256 | 128) <> 0

Переписать что бы индекс подцепился

никак, вычисляемое поле и индекс на него
15 ноя 18, 16:19    [21735391]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1525
Гадя Петрович
AND STATUS & (256 | 128) <> 0


Посмотреть какие значения STATUS соответствуют указанному выражению и оформить как сравнение с определенным набором значений в IN () или диапазоном значений через >, <, beween.
15 ноя 18, 16:32    [21735403]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Sergey Sizov
Гадя Петрович
AND STATUS & (256 | 128) <> 0


Посмотреть какие значения STATUS соответствуют указанному выражению и оформить как сравнение с определенным набором значений в IN () или диапазоном значений через >, <, beween.

все числа с 8 и 9м битом? главное чтобы не BigInt было
15 ноя 18, 16:37    [21735410]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
может если только чутка помочь ( STATUS >= 128 AND ( STATUS & 256 = 256 OR STATUS & 128 = 128 ))
15 ноя 18, 16:38    [21735412]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
msLex
Member

Откуда:
Сообщений: 7988
Sergey Sizov
диапазоном значений через >, <, beween.



STATUS & (256 | 128) - в диапазон не превратишь


Гадя Петрович
Может кто силён в битовых операциях?
Как такое
AND STATUS & (256 | 128) <> 0


Переписать что бы индекс подцепился


STATUS & (256 | 128) <> 0 - это не SARG предикат, он не может использовать индекс (seek)

возможные варианты вам уже предложили : индексированное вычисляемое поле или джойн на справочник всех возможных статусов с фильтрацией справочника по вашему условию
15 ноя 18, 16:41    [21735413]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
msLex,

автор
справочник всех возможных статусов с фильтрацией справочника по вашему условию

я когда-то пытался перевести на такую модель... В общем она оправдываетс себя практически никогда, даже в сравнением с вариантом. Разве что на очень коротких типах...
15 ноя 18, 16:44    [21735415]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
ну до перечисления я сам додумался, не очень удобно. За вычисляемое спасибо, попробую
15 ноя 18, 16:44    [21735416]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Если всё это действительно применять, то встаёт вопрос: а зачем вообще тогда здесь битовые операции? Изначально.
15 ноя 18, 16:46    [21735419]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
iap
Если всё это действительно применять, то встаёт вопрос: а зачем вообще тогда здесь битовые операции? Изначально.
изначально для того, что разработчики применяют свои не всегда полезные привычки к t-sql коду
15 ноя 18, 16:47    [21735422]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
msLex
Member

Откуда:
Сообщений: 7988
TaPaK
msLex,

автор
справочник всех возможных статусов с фильтрацией справочника по вашему условию

я когда-то пытался перевести на такую модель... В общем она оправдываетс себя практически никогда, даже в сравнением с вариантом. Разве что на очень коротких типах...

Зависит от количества реально возможных статусов.
Запросто может быть, что куча битов взаимосвязаны и реальных состояний объекта (даже при 64 битной маске) не более нескольких 1000
15 ноя 18, 16:48    [21735423]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7660
Гадя Петрович,

ИМО даже сделать триггер на сохранение изменений с битовой разбивкой по полям будет гуманнее.
15 ноя 18, 17:32    [21735479]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Владислав Колосов
Гадя Петрович,

ИМО даже сделать триггер на сохранение изменений с битовой разбивкой по полям будет гуманнее.

целый триггер? масштабно
15 ноя 18, 17:34    [21735481]     Ответить | Цитировать Сообщить модератору
 Re: bitwise and  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7660
TaPaK,

может и слишком масштабно :)
15 ноя 18, 17:44    [21735493]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить