Je perdais autour des SSMS et j'ai remarqué que la "taille" de mes colonnes INT
étaient de 4 octets (attendus) mais j'étais un peu choqué de voir mes colonnes BIT
étaient un octet complet.
Ai-je mal compris ce que je regardais?
Combien de colonnes de bits avez-vous définies dans la table? J'ai trouvé cela sur MSDN, il est indiqué que 8 colonnes ou moins de bits sont stockées comme un octet.
Oui.
Si vous n'avez qu'une seule bit
colonne dans la table, le stockage utilise un byte
_ mais jusqu'à 8 bit
colonnes peuvent être stockées dans le même octet afin que les 7 suivants soient "libres " à cet égard.
Il y a aussi un besoin de stockage de 1 bits par colonne pour le NULL_BITMAP
(à nouveau arrondi à l'octet suivant). Dans les pages de données, ceci contient un bit
pour toutes les colonnes quelles que soient ou non indiquent-ils ou non NULL
(avec l'exception des colonnes nullables ajoutées plus tard en tant que métadonnées uniquement. passant par ALTER TABLE
Où la ligne n'a pas encore été mise à jour)