【发布时间】:2016-04-14 17:51:10
【问题描述】:
我正试图从一个 SQLite 数据库中去除一些额外的大小,我从我的一个 Web 服务拉到一个 iOS 应用程序。我正在做一些单独的测试,是什么让表格变得比实际更大。
我有一个包含大约 223k 条记录的价格表。通过仅将 2 个 REAL 列转换为 INTEGER * 100,已经让我的表大小恢复了 34%(以千字节为单位)。这实际上令人震惊..
因为我注意到这种荒谬的差异,所以我检查了只有 1 个表,其中 1 个 INTEGER 类型的列具有相同的 (223k) 记录。
这就是我注意到的(每次测试后我VACUUM):
- 使用
NULL、0或1填充所有行会生成 1.9MB 的文件 - 用
100填充所有行会产生一个 2.1MB 的文件 - 用
1000-10000填充所有行会产生一个 2.4MB 的文件 - 用
100000填充所有行会产生一个 3.0MB 的文件 - 使用
10000000填充所有行会产生一个 3.1MB 的文件
我真的觉得 INTEGER 字段类型的动态存在开销。没有更便宜的方法可以在 SQLite 中存储 int 值,或者这是唯一可以使用的最终游戏?
【问题讨论】:
标签: database-design sqlite database-optimization