sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor og hvornår skal jeg bruge SPARSE COLUMN? (SQL SERVER 2008)

En sparsom kolonne bruger ikke 4 gange så meget plads for at gemme en værdi, bruger den en (fast) 4 ekstra bytes pr. ikke-nul værdi. (Som du allerede har nævnt, tager en NULL 0 plads.)

  • Altså en ikke-nul værdi gemt i en bit kolonne ville være 1 bit + 4 bytes =4,125 bytes. Men hvis 99% af disse er NULL, er det stadig en nettobesparelse.

  • En ikke-nul værdi, der er gemt i en GUID (UniqueIdentifier) kolonne er 16 bytes + 4 bytes =20 bytes. Så hvis kun 50 % af disse er NULL, er det stadig en nettobesparelse.

Så de "forventede besparelser" afhænger stærkt af hvilken sort af kolonnen, vi taler om, og dit estimat af, hvilket forhold der vil være nul vs ikke-nul. Variable bredde kolonner (varchars) er nok lidt sværere at forudsige præcist.

Denne Books Online-side har en tabel, der viser hvilken procentdel af forskellige datatyper skal være nul, for at du kan ende med en fordel.

hvornår skal du bruge en sparsom kolonne? Når du forventer, at en betydelig procentdel af rækkerne har en NULL-værdi. Nogle eksempler, der kommer til at tænke på:

  • En "Ordrereturdato " kolonne i en ordretabel. Du ville håbe, at en meget lille procentdel af salget ville resultere i returnerede produkter.
  • En "4. adresse " linje i en adressetabel. De fleste postadresser, selvom du har brug for et afdelingsnavn og en "Care Of" behøver sandsynligvis ikke 4 separate linjer.
  • Et "suffiks " kolonne i en kundetabel. En ret lav procentdel af personerne har et "Jr." eller "III" eller "Esquire" efter deres navn.


  1. Hvordan kan jeg afgøre i SQL Server, om et dateTime-interval overlapper et andet

  2. Sådan fungerer logins på sammenkædede servere (T-SQL-eksempler)

  3. Mysql select rekursiv få alle børn med flere niveauer

  4. SQL MAX() for begyndere