Действительно ли битовый столбец SQL Server использует пространство в байтах?


20

Я копался в SSMS и заметил, что «размер» моих INTстолбцов составлял 4 байта (ожидаемый), но я был немного шокирован, увидев, что мои BITстолбцы были целым байтом.

Я неправильно понял то, на что я смотрел?


1
Мне повезло, что столбцы BIT выровнены по границе байта, а не по границе слова.
Майк Шеррилл 'Cat Recall'

Ответы:



14

Да.

Если bitв таблице только один столбец, то в хранилище используется byteдо 8 bitстолбцов, которые могут быть сохранены в одном байте, поэтому следующие 7 являются «свободными» в этом отношении.

Для хранения столбца также требуется 1 бит NULL_BITMAP(снова округляется до следующего байта). На страницах данных это содержит bitдля всех столбцов, независимо от того, разрешают они или нет NULL( за исключением столбцов, допускающих значение NULL, добавленных позже, поскольку метаданные изменяются только в том ALTER TABLEслучае, если строка еще не обновлена)


9

BITиспользует один байт на строку, но вы можете упаковать до 8 BITполей в это одно байтовое хранилище.

Итак, первое поле стоит один байт, а следующие семь бесплатны !

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.