4
我正在测试以下模式在SQLite(空间和查询/ s)中如何比较。意外的SQLite大小
我的原始模式使用0
或1
值对于每个bit_*
字段:
CREATE TABLE "original"
(
"id" TEXT NOT NULL,
"bit_a" INTEGER(1) NOT NULL DEFAULT 0,
"bit_b" INTEGER(1) NOT NULL DEFAULT 0,
"bit_c" INTEGER(1) NOT NULL DEFAULT 0
);
我的替代架构使用的位掩码,而不是用值范围从0
到7
:
CREATE TABLE "alternative"
(
"id" TEXT NOT NULL,
"bit_mask" INTEGER(1) NOT NULL DEFAULT 0
);
INTEGER
带符号整数,根据值的大小存储在1,2,3,4,6或8个字节中。
我希望在original
表中每一行取2个比alternative
表更多的字节。但是,在将完全相同的数据插入两个不同的数据库文件后,我发现alternative
版本实际上是,比original
版本大了5.5%。
任何人都知道为什么会发生这种情况?