6

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

4

1 回答 1

7

在 SQLite 的记录格式中,恰好需要一个字节来指定一个值是NULL.

如果您对数据库进行规范化,以便每个非NULL值有一条记录,则可以保存这些NULL字节,但非NULL值会产生额外的开销。SQLite 的最小记录开销

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

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

于 2013-02-18T13:47:06.080 回答