SQL Server имеет бит для обозначения NULL. Такой бит не используется, если столбец определен как NOT NULL
VARCHAR использует переменную длину для хранения данных (и, следовательно, имеет накладные расходы, указывающие, как долго действительные данные), тогда как CHAR - фиксированная ширина.
Таким образом, на этом основании CHAR (1) NOT NULL "короче", чем VARCHAR (1) NOT NULL, поскольку VARCHAR нужен индикатор длины, а CHAR всегда будет использовать только один байт.
РЕДАКТИРОВАТЬ: Обратите внимание, что наличие поля BIT, которое позволяет NULL, требует два бита для его хранения! Я часто вижу поля BIT, где это не учитывалось, не нужно хранить NULL, но для них не было установлено значение NOT NULL, поэтому они тратят немного непреднамеренно