VARCHAR(2)
хранит 2 символа, а не «128 бит на 64-битных платформах», как вы ожидаете.Кроме того, внутреннее представление таково, что оно гарантирует, что формат на диске является переносимым для всех архитектур.То есть.64-разрядная система представляет VARCHAR(2)
так же, как и система x86.
Если вы хотите сохранить растровое изображение, это будут двоичные данные, тогда используйте тип BINARY
.Вы можете представить 120 атрибутов в типе BINARY(16)
.Такое хранилище очень плотное и занимает мало места, но его очень сложно найти и проиндексировать.В то время как SQL Server поддерживает побитовые операторы , поиск такого поля растрового изображения, например, для извлечения всех записей, у которых бит 7 выключен и бит включен, может выполняться только сквозной, размер-of-data, сканирование таблицы.
Кроме того, вместо использования поля BINARY (16) для хранения 120 однобитовых атрибутов, рассмотрите объявление об объявлении в таблице 120 BIT
столбцов.Им потребуется 2 бита для хранения (один бит для данных, 1 бит для NULLability), но ваш код будет намного чище и удобочитаемее, поскольку он фактически манипулирует именованными столбцами, а не загадочными побитовыми операциями.Sargability этого решения такая же, как BINARY (16) (т.е. не ищет, только сканирование таблицы).
Вы также должны прочитать о разреженных столбцах и отфильтрованных индексов , обе концепции вполне применимы к вашему дизайну.