Я только что попытался создать две таблицы, одну с одним столбцом int и одну с 30-битными столбцами, затем добавил строку к каждой и просмотрел их с помощью Просмотрщика SQL Server Internals
CREATE TABLE T_INT(X INT DEFAULT 1073741823);
CREATE TABLE T_BIT(
X1 BIT DEFAULT 1,
/*Other columns omitted for brevity*/
X30 BIT DEFAULT 1
);
INSERT INTO T_INT DEFAULT VALUES;
INSERT INTO T_BIT DEFAULT VALUES;
Одна строка для таблицы с 30-битными столбцами
Одна строка для таблицы с одним столбцом int
С точки зрения хранения SQL Server объединяет битовые столбцы, и данные хранятся в одинаковом объеме (желтый). В конечном итоге вы теряете 3 байта строки для растрового изображения NULL (фиолетового цвета), хотя его длина прямо пропорциональна количеству столбцов (независимо от того, допускают ли они пустые значения)
Ключ для полей (для версии int одинаковая цветовая кодировка для битовой версии)