database - 存储空数据是否占用磁盘空间?

标签 database sqlite null diskspace

我用的是sqlite数据库。
添加记录时,磁盘空间显然被用于非空数据。但是包含空值的数据记录呢? 我问的原因是我会有大量的列(50 多个)和数百万条包含空数据的记录,我想知道这是否是设计我的数据库的最有效方式

最佳答案

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

如果您对数据库进行规范化,以便每个非 NULL 值都有一个记录,则可以保存那些 NULL 字节,但是对于非 <NULL 值。 SQLite 的最小记录开销 is :

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

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

关于database - 存储空数据是否占用磁盘空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14934488/

相关文章:

c# - 使用反射调用方法时处理空参数

mysql - 从表中选择,其中一列仅包含另一列的元素

php - 如何从数据库中回显回车符和撇号?

c# - sqlite 添加 x 天至今(x 存储在表中)

android - Sugar ORM 在 Lollipop 上抛出 NoSuchTable 异常

c# - 为什么连接空字符串有效但调用 "null.ToString()"无效?

scala - 在分配 "null"之前,必须限制类型是什么?

mysql - 插入现有表中新添加的列

mysql - 根据 row=column name 更新 mySQL 表

参与 A OR B 的 SQLite 人员