Нет необходимости связываться с [var]binary(n)
. Поскольку вам нужно только 24 бита, храните обычные, не обнуляемые int
. Затем просто выполните бит-математику в своем коде, то есть операторы сдвига (<<
/ >>
) и битовую комбинацию (&
, |
и, возможно, некоторые ~
). Больше ничего не нужно. Поэтому, если мы решим, что младший бит равен 00:00, работает справа налево, то кто-то, присутствующий в 03:00, и 14: 00-16: 00 (включительно) будет иметь значение
(1 << 3) | (1 << 14) | (1 << 15) | (1 << 16) ==> 114696
Если вас не устраивает бит-математика, то либо:
- получить удобно с бит-математикой
- не пытайтесь сохранить его как двоичный файл
Вы также заявляете:
Но определенно это тоже худший.
Каким образом? Он описывает ваш сценарий, и SQL-сервер будет автоматически сжимать несколько полей bit
. На самом деле это может быть неплохим вариантом.