Я дізнався про bit stringтип даних останнім часом, і мені дуже цікаво:
Внизу цієї сторінки документа є речення:
... плюс 5 або 8 байт накладних витрат залежно від довжини рядка
Як обробляються бітові рядки іншими мовами, такими як PHP, Java, C #, C ++ тощо, через драйвери, такі як Npgsql, ODBC тощо.
Для питання №1 використання smallint або bigint буде набагато ефективнішим для зберігання даних, і, можливо, запропонує підвищення продуктивності, оскільки цілі числа підтримуються повсюдно. Більшість мов програмування обробляють бітові операції з цілими числами легко. Якщо це так, який сенс вводити тип даних бітових рядків? Це лише для випадків, коли потрібна велика кількість бітових масок? Можливо індексація бітових полів? Мені цікавіше, як проводиться індексація бітових полів у PostgreSQL.
Для №2 я розгублений, більш ніж цікавий. Наприклад, що робити, якщо я зберігаю бітові маски тиждень у полі трохи (7), один біт на день, а найнижчий біт - понеділок. Тоді я запитую значення в PHP та C ++. Що я отримаю? У документації сказано, що у мене буде трохи рядка, проте бітовий рядок - це не те, що я можу використовувати безпосередньо - як у цілих числах. Тоді в цьому випадку я повинен відмовитися від бітового поля?
Хто-небудь може розробити, чому і коли я повинен використовувати біт або біт варіювання?