Я копался в SSMS и заметил, что «размер» моих INTстолбцов составлял 4 байта (ожидаемый), но я был немного шокирован, увидев, что мои BITстолбцы были целым байтом.
Я неправильно понял то, на что я смотрел?
Я копался в SSMS и заметил, что «размер» моих INTстолбцов составлял 4 байта (ожидаемый), но я был немного шокирован, увидев, что мои BITстолбцы были целым байтом.
Я неправильно понял то, на что я смотрел?
Ответы:
Сколько битовых столбцов вы определили в таблице? Я нашел это на MSDN, он говорит, что 8 или менее битовых столбцов хранятся как один байт.
Да.
Если bitв таблице только один столбец, то в хранилище используется byteдо 8 bitстолбцов, которые могут быть сохранены в одном байте, поэтому следующие 7 являются «свободными» в этом отношении.
Для хранения столбца также требуется 1 бит NULL_BITMAP(снова округляется до следующего байта). На страницах данных это содержит bitдля всех столбцов, независимо от того, разрешают они или нет NULL( за исключением столбцов, допускающих значение NULL, добавленных позже, поскольку метаданные изменяются только в том ALTER TABLEслучае, если строка еще не обновлена)