Я копался в SSMS и заметил, что «размер» моих INT
столбцов составлял 4 байта (ожидаемый), но я был немного шокирован, увидев, что мои BIT
столбцы были целым байтом.
Я неправильно понял то, на что я смотрел?
sql-server
datatypes
Nate
источник
источник
Ответы:
Сколько битовых столбцов вы определили в таблице? Я нашел это на MSDN, он говорит, что 8 или менее битовых столбцов хранятся как один байт.
http://msdn.microsoft.com/en-us/library/ms177603.aspx
источник
Да.
Если
bit
в таблице только один столбец, то в хранилище используетсяbyte
до 8bit
столбцов, которые могут быть сохранены в одном байте, поэтому следующие 7 являются «свободными» в этом отношении.Для хранения столбца также требуется 1 бит
NULL_BITMAP
(снова округляется до следующего байта). На страницах данных это содержитbit
для всех столбцов, независимо от того, разрешают они или нетNULL
( за исключением столбцов, допускающих значение NULL, добавленных позже, поскольку метаданные изменяются только в томALTER TABLE
случае, если строка еще не обновлена)источник
BIT
использует один байт на строку, но вы можете упаковать до 8BIT
полей в это одно байтовое хранилище.Итак, первое поле стоит один байт, а следующие семь бесплатны !
источник