存储空数据时是否消耗了磁盘空间?

时间:2013-02-18 10:48:12

标签: database sqlite null diskspace

我使用的是sqlite数据库 添加记录时,磁盘空间显然用于非空数据。但是包含空值的数据记录呢? 为什么我要问的是,我将拥有大量列(50+)和数百万条包含空数据的记录,我想知道它是否是设计数据库的最有效方法

1 个答案:

答案 0 :(得分:4)

在SQLite的record format中,只需要一个字节来指定值为NULL

如果规范化数据库以使每个非NULL值有一条记录,则保存NULL个字节,但非NULL值会产生额外开销。 SQLite的最小记录开销is

  • 两个字节的单元格指针,
  • 至少一个字节的有效负载长度,
  • rowid
  • 的几个字节
  • 对于您的情况,指向返回原始记录的外键的几个字节。

此外,将非NULL值存储在单独的表中可能需要索引才能获得有效的查找。