Я использую базу данных sqlite.
При добавлении записей дисковое пространство, очевидно, используется для не нулевых данных. Но как насчет записей данных, содержащих нулевые значения? Почему Im запрашиваемого что у меня будет большое количество столбцов (50+) и миллионов записей, которые будут содержать нулевые данные и им интересно, если его наиболее эффективный способ проектирования моей базы данныхЕмкость дискового пространства при хранении нулевых данных?
3
A
ответ
3
В SQLite-х record format ровно один байту необходимо указать, что значение равно NULL
.
Если вы нормализуете свою базу данных так, чтобы у вас была одна запись за значение не NULL
, вы сохраняете эти NULL
байт, но у вас есть дополнительные накладные расходы для значений, отличных от NULL
. Минимальная запись накладных SQLite в is:
- два байта указателя ячейки,
- по меньшей мере, один байт длины полезной нагрузки,
- несколько байт для
rowid
и - для вашего случая, несколько байт для иностранных который указывает на исходную запись.
Кроме того, для хранения значений, отличных от NULL
, в отдельной таблице может потребоваться индекс для эффективного поиска.