Rzadka kolumna nie zajmuje czterokrotnie większej ilości miejsca do przechowywania wartości używa (stałego) 4 dodatkowych bajtów na wartość inną niż null. (Jak już wspomniałeś, NULL zajmuje 0 miejsca).
-
A więc niepusta wartość przechowywana w bicie kolumna będzie miała 1 bit + 4 bajty =4,125 bajtów. Ale jeśli 99% z nich ma wartość NULL, nadal są to oszczędności netto.
-
Wartość niepusta przechowywana w GUID (UniqueIdentifier) kolumna ma 16 bajtów + 4 bajty =20 bajtów. Więc jeśli tylko 50% z nich ma wartość NULL, to nadal jest to oszczędność netto.
Tak więc „oczekiwane oszczędności” zależą w dużej mierze od rodzaju kolumny, o której mówimy, i oszacowanie, jaki stosunek będzie null vs non-null. Kolumny o zmiennej szerokości (varchary) są prawdopodobnie nieco trudniejsze do dokładnego przewidzenia.
Ta strona Books Online zawiera tabelę pokazującą jaki procent różnych typów danych musiałoby mieć wartość zerową, aby uzyskać korzyści.
Więc kiedy czy powinieneś użyć rzadkiej kolumny? Gdy spodziewasz się, że znaczny procent wierszy będzie miał wartość NULL. Kilka przykładów, które przychodzą mi do głowy:
- „Data zwrotu zamówienia ” w tabeli zamówień. Masz nadzieję, że bardzo mały procent sprzedaży przyniesie zwrócone produkty.
- „Czwarty adres ” w tabeli adresów. Większość adresów pocztowych, nawet jeśli potrzebujesz nazwy działu i „Opieki”, prawdopodobnie nie wymaga 4 oddzielnych wierszy.
- „Przyrostek ” w tabeli klientów. Dość mały procent osób ma po nazwie „Jr.”, „III” lub „Esquire”.