Индексы BITMAP для хранения сотен индикаторных атрибутов объекта данных - PullRequest
0 голосов
/ 09 декабря 2011

Может ли кто-нибудь указать нам информацию об использовании BITMAP (или опровергнуть его) для хранения сотен подобных индикаторам (вкл / выкл) атрибутов объекта данных.

Например, если запись «Калифорния» в таблице STATE имеет 120 индикаторных атрибутов, и эти атрибуты однозначно идентифицируют Калифорнию, было бы разумно сохранить эти индикаторы в поле VARCHAR (2) (при условии 64-битного системы)?

Мы используем 120 атрибутов для определения суррогатного ключа Калифорнии. Наша БД - это SQL Server. Мы также обсуждаем добавление 120 односимвольных или однобитовых полей или одного поля VARCHAR (120).

Большое спасибо за помощь!

1 Ответ

1 голос
/ 09 декабря 2011

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) (т.е. не ищет, только сканирование таблицы).

Вы также должны прочитать о разреженных столбцах и отфильтрованных индексов , обе концепции вполне применимы к вашему дизайну.

...