Тема размера значений NULL обсуждалась во многих темах, таких как один в SO.
Я мог понять, что если строка имеет фиксированный размер, int
или varchar(x)
NULL valeus занимают место (нули, если атрибут равен int
, или пробелы, если атрибут равен varchar(x)
) + 1 байт для растрового изображения NULL.
Я создал таблицу с двумя атрибутами: CREATE TABLE Person (id int NULL, name VARCHAR(50) NULL)
.
И использовал скрипт здесь, чтобы получить для каждой строки размер в B:
Я мог прочитать из таблицы следующие факты:
- Первые три строки: 1 байт на каждую букву + 1 байт для растрового изображения NULL.
- 4-я строка: 2 растровых изображения NULL.
- последние две строки: 4 байта int + 1 байт для растрового изображения NULL.
Почему приведенные выше значения int/varchar(50) NULL не заняли весь заявленный размер?
Я использую SQL Server Management Studio 2014. Изменились ли нормы?