Je fouillais SSMS et j'ai remarqué que la "taille" de mes INT
colonnes était de 4 octets (attendue) mais j'ai été un peu choqué de voir que mes BIT
colonnes étaient un octet entier.
Ai-je mal compris ce que je regardais?
Je fouillais SSMS et j'ai remarqué que la "taille" de mes INT
colonnes était de 4 octets (attendue) mais j'ai été un peu choqué de voir que mes BIT
colonnes étaient un octet entier.
Ai-je mal compris ce que je regardais?
Réponses:
Combien de colonnes de bits avez-vous définies dans le tableau? J'ai trouvé cela sur MSDN, il dit que les colonnes de 8 bits ou moins sont stockées comme un octet.
Oui.
Si vous n'avez qu'une seule bit
colonne dans le tableau, le stockage utilise un, byte
mais jusqu'à 8 bit
colonnes peuvent être stockées dans le même octet, les 7 suivantes sont donc "libres" à cet égard.
Il existe également un besoin de stockage de 1 bit par colonne pour le NULL_BITMAP
(encore arrondi à l'octet suivant). Dans les pages de données, il contient un bit
pour toutes les colonnes, qu'elles autorisent ou non NULL
(à l'exception des colonnes annulables ajoutées plus tard en tant que métadonnées ne changent que ALTER TABLE
si la ligne n'a pas encore été mise à jour)