2013-02-18 57 views
3

我使用sqlite數據庫。
添加記錄時,磁盤空間顯然用於非空數據。但是,包含空值的數據記錄呢? 爲什麼林問的是,我將有大量的將包含空數據和我想知道記錄列(50+)以及數以百萬計的,如果它的設計我的數據庫存儲空數據時是否消耗磁盤空間?

回答

3

SQLite中的record format,正是一個最有效的方法字節需要指定一個值爲NULL

如果規範化數據庫以便每個非NULL值有一條記錄,那麼可以保存這些NULL字節,但是對非NULL值有額外開銷。 的SQLite的最小記錄開銷is

  • 兩個字節單元格指針,
  • 至少一個字節的有效載荷長度,
  • rowid幾個字節,並
  • 對於你的情況,對國外幾個字節鍵指向原始記錄。

此外,將非NULL值存儲在單獨的表中可能需要索引才能獲得高效的查找。