Это зависит от механизма базы данных, а также от типа столбца.
По крайней мере, SQLite сохраняет каждый пустой столбец как «нулевой тип», который занимает NO дополнительное пространство (каждая запись сериализуетсяв один большой двоичный объект для хранения, поэтому в этом случае резервируется нет пространства для ненулевого значения).При такой оптимизации значение NULL имеет очень мало накладных расходов для хранения.(SQLite также имеет оптимизацию для значений 0 и 1 - разработчики баз данных не играют!) Подробнее см. 2.1 Формат записи .
Теперь, вещи могут многое получитьболее сложный, особенно с обновлением и потенциальной фрагментацией индекса.Например, в SQL Server пространство может быть зарезервировано для данных столбца, в зависимости от типа.Например, int null
все равно зарезервирует место для целого числа (а также где-то будет иметь флаг "is null"), однако varchar(100) null
, похоже, не зарезервирует пространство (последний бит из памяти, так чтопредупрежден!).
Удачного кодирования.