SQLite:如何减少整数值的字节大小?

Posted

技术标签:

【中文标题】SQLite:如何减少整数值的字节大小?【英文标题】:SQLite: How to reduce byte size of integer values? 【发布时间】:2015-05-07 09:43:10 【问题描述】:

我有一个 SQLite 表(没有行 ID,但这可能无关紧要,并且没有任何索引),其中我的行包含以下数据:

2 个实数值,其中一个是主键 3 个整数 还有 1 个整数字段,但目前始终为空

根据http://www.sqlite.org/datatype3.html,整数值可以根据大小取1、2、3、4、6或8个字节。因此,我希望表中的每一行占用大约 20 个字节。实际上,sqlite3_analyzer 给了我餐桌

Average payload per entry......................... 25.65     
Maximum payload per entry......................... 26

介于最小值 20 和最大值 32 之间(如果所有整数都以 4 个字节存储)。是否有可能给数据库一个“提示”以尽可能使用更小的整数类型?或者如何解释这种差异? (我不认为它是索引,因为该表没有索引。)

同样,在上一张表中,我有 2 个实数值 + 2 个小整数,每个条目占用的字节数略多于 24 个字节(这也超出了我的预期)。

另外,没有办法用 SQLite 以单精度存储浮点数吗?

【问题讨论】:

【参考方案1】:

实际的record format有一个整数表示表头大小,每列一个整数表示值的类型,列值的所有数据。

在这种情况下,我们有:

bytes
1     header size
6     column types
16    two real values
3     three small integers between 2 and 127
0     NULL
--
26

【讨论】:

这就解释了。谢谢!

以上是关于SQLite:如何减少整数值的字节大小?的主要内容,如果未能解决你的问题,请参考以下文章

mysql 各数据类型的 大小及长度

mysql 各数据类型的 大小及长度

如何在 SQlite3 (ESP32 - Arduino IDE) 中插入整数值?

Firestore - 如何在数据库中原子地减少整数值?

mysql字段类型

MySQL学习----各种字符的长度总结