Рядката колона не използва 4 пъти повече пространство за да съхранява стойност, той използва (фиксирани) 4 допълнителни байта за ненулева стойност. (Както вече казахте, NULL заема 0 интервал.)
-
Така че ненулева стойност, съхранена в бит колоната ще бъде 1 бит + 4 байта =4,125 байта. Но ако 99% от тях са NULL, това пак е нетна икономия.
-
Ненулева стойност, съхранена в GUID (UniqueIdentifier) колоната е 16 байта + 4 байта =20 байта. Така че, ако само 50% от тях са NULL, това все още е нетна икономия.
Така че „очакваните спестявания“ зависят силно от това какъв вид от колоната, за която говорим, и вашата оценка за това кое съотношение ще бъде нулево спрямо ненулево. Колоните с променлива ширина (varchars) вероятно са малко по-трудни за точно прогнозиране.
Тази онлайн страница с книги има таблица, показваща какъв процент на различните типове данни трябва да е нула, за да получите полза.
И така, кога трябва ли да използвате рядка колона? Когато очаквате значителен процент от редовете да имат стойност NULL. Някои примери, които идват на ум:
- А „Дата на връщане на поръчка " колона в таблица за поръчки. Бихте се надявали, че много малък процент от продажбите ще доведе до върнати продукти.
- А „4-ти адрес " ред в таблица с адреси. Повечето пощенски адреси, дори ако имате нужда от име на отдел и "Грижа за" вероятно не се нуждаят от 4 отделни реда.
- А "Суфикс " колона в таблица с клиенти. Доста нисък процент от хората имат "младши" или "III" или "Esquire" след името си.