Je fouillais SSMS et j'ai remarqué que la "taille" de mes INTcolonnes était de 4 octets (attendue) mais j'ai été un peu choqué de voir que mes BITcolonnes étaient un octet entier.
Ai-je mal compris ce que je regardais?
Je fouillais SSMS et j'ai remarqué que la "taille" de mes INTcolonnes était de 4 octets (attendue) mais j'ai été un peu choqué de voir que mes BITcolonnes é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 bitcolonne dans le tableau, le stockage utilise un, bytemais jusqu'à 8 bitcolonnes 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 bitpour 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 TABLEsi la ligne n'a pas encore été mise à jour)