我使用sqlite数据库.
添加记录时,磁盘空间显然用于非空数据.但是包含空值的数据记录呢?
为什么我要问的是,我将拥有大量的列(50)和数百万条包含空数据的记录,我想知道它是否是设计数据库的最有效方法
添加记录时,磁盘空间显然用于非空数据.但是包含空值的数据记录呢?
为什么我要问的是,我将拥有大量的列(50)和数百万条包含空数据的记录,我想知道它是否是设计数据库的最有效方法
解决方法
在sqlite的
record format中,只需要一个字节来指定值为NULL.
如果规范化数据库以使每个非NULL值有一个记录,则保存这些NULL字节,但是对于非NULL值,您有额外的开销.
sqlite的最低记录开销is:
>两个字节的单元格指针,
>至少一个字节的有效载荷长度,
> rowid的几个字节,和
>对于您的情况,指向返回原始记录的外键的几个字节.
此外,将非NULL值存储在单独的表中可能需要索引才能获得有效的查找.