2014-03-04 46 views
4

我正在測試以下模式在SQLite(空間和查詢/ s)中如何比較。意外的SQLite大小

我的原始模式使用01值對於每個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 
); 

我的替代架構使用的位掩碼,而不是用值範圍從07

CREATE TABLE "alternative" 
(
    "id"  TEXT NOT NULL, 
    "bit_mask" INTEGER(1) NOT NULL DEFAULT 0 
); 

根據SQLite documentation

INTEGER

帶符號整數,根據值的大小存儲在1,2,3,4,6或8個字節中。

我希望在original表中每一行取2個比alternative表更多的字節。但是,在將完全相同的數據插入兩個不同的數據庫文件後,我發現alternative版本實際上是,比original版本大了5.5%

任何人都知道爲什麼會發生這種情況?

回答