我应该使用PostgreSQL位字符串吗?
我最近一直在学习位串数据类型,我很好奇:
>在this doc page的底部有一句话:
>如何通过Npgsql,ODBC等驱动程序在其他语言(如PHP,Java,C#,C等)中处理位串. 对于问题#1,使用smallint或bigint将提高存储效率,并且可能会提供性能提升,因为所有地方都支持整数.大多数编程语言都可以轻松处理整数上的位操作.如果是这种情况,引入位串数据类型的重点是什么?仅适用于需要大量位掩码的情况吗?比特字段索引可能吗?我对如何在PostgreSQL中完成位字段索引感到好奇. 对于#2,我很困惑,不仅仅是好奇.例如,如果我将星期位掩码存储在位(7)字段中,一天一位,最低位代表星期一,该怎么办?然后我在PHP和C中查询值.我会得到什么?文档说我会有一些字符串,但是有点字符串不能直接使用 – 就像整数一样.那么在这种情况下,我应该放弃比特字段吗? 任何人都可以详细说明为什么以及何时应该使用位或位变化?
如果您只有几个变量,我会考虑保留单独的
boolean 列.
>索引很容易.特别是,indexes on expressions很容易. 优化存储 如果您有超过手动满变量但小于33,则 >在磁盘上占用4个字节. 有了更多的变量,或者你想要大量操作这些值,或者如果你没有巨大的表和磁盘空间/ RAM没有问题,或者如果你不确定要选择什么,我会考虑 >占用至少5个字节(或非常长的字符串为8)加上每组8位(向上舍入)的1个字节. 例子 对于仅3位信息,单个布尔列通过3个字节获得,一个整数需要4个字节,位串为6个字节(5 1). 对于32位信息,一个整数仍需要4个字节,一个位字符串占用9个字节(5 4),布尔列占用32个字节. 进一步阅读 > Is there any difference between integer and bit(n) data types for a bitmask? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |