2013-02-18 1 views
3

Я использую базу данных sqlite.
При добавлении записей дисковое пространство, очевидно, используется для не нулевых данных. Но как насчет записей данных, содержащих нулевые значения? Почему Im запрашиваемого что у меня будет большое количество столбцов (50+) и миллионов записей, которые будут содержать нулевые данные и им интересно, если его наиболее эффективный способ проектирования моей базы данныхЕмкость дискового пространства при хранении нулевых данных?

ответ

3

В SQLite-х record format ровно один байту необходимо указать, что значение равно NULL.

Если вы нормализуете свою базу данных так, чтобы у вас была одна запись за значение не NULL, вы сохраняете эти NULL байт, но у вас есть дополнительные накладные расходы для значений, отличных от NULL. Минимальная запись накладных SQLite в is:

  • два байта указателя ячейки,
  • по меньшей мере, один байт длины полезной нагрузки,
  • несколько байт для rowid и
  • для вашего случая, несколько байт для иностранных который указывает на исходную запись.

Кроме того, для хранения значений, отличных от NULL, в отдельной таблице может потребоваться индекс для эффективного поиска.