我正在比较两个非常准系统的 SQLite 数据库,其中相同的数据以不同的方式存储。
数据库 A 有这样的表:
字符串(唯一文本) | count_1(整数) | count_2(整数) |
---|---|---|
这 | 23 | 10 |
它 | 56 | 44 |
曾是 | 32 | 89 |
数据库 B 有这样的表:
字符串(文本) | count_1(整数) | count_2(整数) |
---|---|---|
这 | 23 | null |
这 | null |
10 |
它 | 56 | null |
它 | null |
44 |
曾是 | 32 | null |
曾是 | null |
89 |
奇怪的是,在两者之后,数据库 A 占用的磁盘空间比数据库 B多近 50%(4.8MB 对 2.5MB)VACUUM
。这违背了我的预期,因为数据库 B 有双倍的行并且必须重复每个字符串值两次。我想知道是否对此有任何解释,或者我是否只是以某种方式错误地生成了表格。如果我在这里遗漏了一些非常基本的东西,我深表歉意——我是 RDB 的新手。
更新:我现在确定数据库 A 中字符串列的 UNIQUE 约束是导致大小加倍的原因——我很好奇为什么会这样!