Stavo frugando in SSMS e ho notato che la "dimensione" delle mie INTcolonne era di 4 byte (prevista), ma ero un po 'scioccato nel vedere le mie BITcolonne erano un intero byte.
Ho frainteso quello che stavo guardando?
Stavo frugando in SSMS e ho notato che la "dimensione" delle mie INTcolonne era di 4 byte (prevista), ma ero un po 'scioccato nel vedere le mie BITcolonne 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 bitnella tabella è presente una sola colonna, l'archiviazione utilizza un numero bytemassimo 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 bitper 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 TABLEcui la riga non è stata ancora aggiornata)