Polecam przeczytanie tego, aby uzyskać dobre wyjaśnienie pustego przechowywania:W jaki sposób SQL Server naprawdę przechowuje znaki NULL . Krótko mówiąc, bit null/not null jest przechowywany w innym miejscu, bitmapa null dla wiersza.
Z artykułu:
Tak więc, podczas gdy rzeczywiste wartości dla 8-bitowych kolumn są przechowywane w 1 bajcie, są dodatkowe bity w pustej mapie bitowej wiersza, które wskazują, czy ta kolumna jest NULL, czy nie... więc zależy to od tego, jak liczysz. Być całkowicie dokładne, 8-bitowe kolumny wykorzystują 2 bajty , po prostu podziel się na 2 różne lokalizacje.