Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego i kiedy powinienem używać SPARSE COLUMN? (SERWER SQL 2008)

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”.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sprawdź, czy istnieje tabela tymczasowa i usuń, jeśli istnieje przed utworzeniem tabeli tymczasowej

  2. Jak wykonać procedurę składowaną w programie C#?

  3. Jak dowiedzieć się, co blokuje moje stoły?

  4. Podziel jedną kolumnę na wiele wierszy

  5. Jak utworzyć ograniczenie CHECK w programie SQL Server (przykłady T-SQL)