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%。
任何人都知道爲什麼會發生這種情況?