Недавно я узнал о bit string
типе данных, и мне довольно любопытно:
Внизу этой страницы документа есть предложение:
... плюс 5 или 8 байтов в зависимости от длины строки
Как обрабатываются битовые строки на других языках, таких как PHP, Java, C #, C ++ и т. Д., Через драйверы, такие как Npgsql, ODBC и т. Д.
Для вопроса № 1 использование smallint или bigint будет намного более эффективным с точки зрения хранения и, возможно, обеспечит выигрыш в производительности, поскольку целые числа поддерживаются везде. Большинство языков программирования с легкостью обрабатывают битовые операции над целыми числами. Если это так, то какой смысл вводить тип данных битовой строки? Только для случаев, когда требуется большое количество битовых масок? Индексация битового поля может быть? Меня больше интересует, как выполняется индексация битовых полей в PostgreSQL.
Для # 2, я запутался, более чем любопытно. Например, что если я сохраню битовые маски дня недели в поле bit (7), один бит на день, причем младший бит представляет понедельник. Затем я запрашиваю значение в PHP и C ++. Что я получу? В документации сказано, что у меня будет битовая строка, однако битовую строку я не могу использовать напрямую - как с целыми числами. Тогда в этом случае я должен отказаться от битового поля?
Кто-нибудь может уточнить, почему и когда я должен использовать бит или бит по-разному?