Stavo frugando in SSMS e ho notato che la "dimensione" delle mie INT
colonne era di 4 byte (prevista), ma ero un po 'scioccato nel vedere le mie BIT
colonne erano un intero byte.
Ho frainteso quello che stavo guardando?
Stavo frugando in SSMS e ho notato che la "dimensione" delle mie INT
colonne era di 4 byte (prevista), ma ero un po 'scioccato nel vedere le mie BIT
colonne erano un intero byte.
Ho frainteso quello che stavo guardando?
Risposte:
Quante colonne di bit hai definito nella tabella? Ho trovato questo su MSDN, dice che le colonne a 8 o meno bit sono memorizzate come un byte.
Sì.
Se bit
nella tabella è presente una sola colonna, l'archiviazione utilizza un numero byte
massimo di 8bit
colonne che possono essere archiviate nello stesso byte in modo che le 7 successive siano "libere" a tale riguardo.
Esiste anche una necessità di archiviazione di 1 bit per colonna per NULL_BITMAP
(nuovamente arrotondato al byte successivo). Nelle pagine di dati questo contiene un bit
per tutte le colonne indipendentemente dal fatto che lo consentano o meno NULL
(ad eccezione delle colonne nullable aggiunte in seguito poiché i metadati cambiano solo attraverso il punto in ALTER TABLE
cui la riga non è stata ancora aggiornata)