如何编码一系列整数布尔对?

问题描述 投票:0回答:0

我有一系列整数 1,2,3,...,22。与布尔值配对(没有模式)。 整数和布尔值在数据库表中各有一列,每个新项目都是一行。 所有这些行都属于外键的一个实例(对于每个不同的键,数字将从 1 循环到 22)。

例子;

+--------+------+
| number | bool |
+--------+------+
|      1 |    0 |
|      2 |    0 |
|      3 |    1 |
|    ... |  ... |
|     22 |    1 |
+--------+------+

有没有这样的压缩技术,我可以将所有这些行折叠成一行?

我完全没有尝试过。显然,成对乘积的总和不起作用,因为 [(9,1)] 等同于 [(3,1),(6,1)]。

我不太了解压缩算法,无法开发出可靠的解决方案。因此,我已经为一些非常著名的算法已经存在而我不知道的可能性做好了充分的准备。

然而!

既然数字只是循环,为什么不将布尔值存储为 22 位整数,其中第 n 个数字对应于二进制中的第 n 位?它不会节省那么多空间(也许是一半?),但它会使查询更容易。还有字典/查找或需要时解压的东西(22 位很多。但没有什么不能临时解压的?)?

不确定我是否忽略了什么。

postgresql encoding compression embedding
© www.soinside.com 2019 - 2024. All rights reserved.