sql >> Database >  >> RDS >> Sqlserver

Waarom en wanneer moet ik SPARSE COLUMN gebruiken? (SQL-SERVER 2008)

Een schaarse kolom gebruikt niet 4x de hoeveelheid ruimte om een ​​waarde op te slaan, gebruikt het een (vaste) 4 extra bytes per niet-null-waarde. (Zoals je al hebt aangegeven, neemt een NULL 0 spatie in beslag.)

  • Dus een niet-null-waarde opgeslagen in een bit kolom zou 1 bit + 4 bytes =4,125 bytes zijn. Maar als 99% hiervan NULL is, is het nog steeds een nettobesparing.

  • Een niet-null-waarde opgeslagen in een GUID (UniqueIdentifier) kolom is 16 bytes + 4 bytes =20 bytes. Dus als slechts 50% hiervan NULL is, is dat nog steeds een nettobesparing.

Dus de "verwachte besparing" hangt sterk af van wat voor soort van de kolom waar we het over hebben, en uw schatting van welke verhouding nul versus niet-nul zal zijn. Kolommen met variabele breedte (varchars) zijn waarschijnlijk iets moeilijker nauwkeurig te voorspellen.

Deze pagina Boeken online bevat een tabel met welk percentage van verschillende gegevenstypen moet nul zijn om een ​​voordeel te krijgen.

Dus wanneer moet je een Sparse Column gebruiken? Wanneer u verwacht dat een aanzienlijk percentage van de rijen een NULL-waarde heeft. Enkele voorbeelden die te binnen schieten:

  • Een "Retourdatum bestelling " kolom in een besteltabel. Je zou hopen dat een heel klein percentage van de omzet zou resulteren in geretourneerde producten.
  • Een "4e adres " regel in een adrestabel. De meeste postadressen, zelfs als u een Afdelingsnaam en een "Care Of" nodig heeft, hebben waarschijnlijk geen 4 aparte regels nodig.
  • Een "Suffix " kolom in een klantentabel. Een vrij laag percentage mensen heeft een "Jr." of "III" of "Esquire" achter hun naam.


  1. Foutcode:1005. Kan tabel '...' niet maken (fout:150)

  2. Hoe zich te ontdoen van MySQL-fout 'Voorbereide instructie moet opnieuw worden voorbereid'

  3. Een variabele declareren in een PostgreSQL-query

  4. Index gebruiken, tijdelijk gebruiken, filesort gebruiken - hoe dit op te lossen?