postgresql – 可以在Postgres中存储1个字节的数字吗?

前端之家收集整理的这篇文章主要介绍了postgresql – 可以在Postgres中存储1个字节的数字吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有7个8位整数值,我想要存储在Postgres中. Pg不提供单字节整数类型SMALLINT或2个字节,它是最小的整型数据类型.有没有办法我可以存储我的7 8位数字并节省空间?

具有7元素数组的数组类型是否更紧凑?或者,我应该使用我的7个数字的二进制表示法(例如,在Perl中使用pack)并将其存储在一个bytea字段中?

任何其他建议?

假设Postgresql中任何行的开销为 23 bytes(HeapTupleHeaderData),如果您真的关心少量的空间,那么您可能选择了错误的方式来存储数据.

无论如何,由于所有更复杂的类型都有自己的开销(bytea增加了四个字节的开销,例如位串5到8),完成所需内容的唯一方法是使用bigint(8字节)以数值方式移动每个值并将结果进行OR运算.您可以使用bit string operations使代码更容易 – 以位字符串计算,然后在存储之前转换为bigint – 或者如果要使速度更好,则只需手动乘法/加法.例如,以下是将两个字节一起存储为两个字节的结构,然后再重新得到它们:

int2 = 256 * byte1 + byte2
byte1 = int2 / 256
byte2 = int2 % 256

您可以将相同的想法扩展到存储其中的7个方法.检索开销仍然是可怕的,但您实际上会在此过程中节省一些空间.但是相对于行标题来说不是很多.

猜你在找的Postgre SQL相关文章