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?
sql-server
datatypes
Nate
la source
la source
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.
http://msdn.microsoft.com/en-us/library/ms177603.aspx
la source
Oui.
Si vous n'avez qu'une seule
bit
colonne dans le tableau, le stockage utilise un,byte
mais jusqu'à 8bit
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 unbit
pour toutes les colonnes, qu'elles autorisent ou nonNULL
(à l'exception des colonnes annulables ajoutées plus tard en tant que métadonnées ne changent queALTER TABLE
si la ligne n'a pas encore été mise à jour)la source
BIT
utilise un octet par ligne, mais vous pouvez regrouper jusqu'à 8BIT
champs dans ce stockage d'un octet.Le premier champ coûte donc un octet, mais les sept suivants sont gratuits !
la source