Maxim Boguk wrote:
> Насколько тяжело будет написать реализацию GIN/GIST индексов для полей
> типа Bit String Types
> (http://www.postgresql.org/docs/8.3/interactive/datatype-bit.html)
> для ускорения поиска через побитовые операций типа AND/OR (фактически
> работа с массивом флагов ускоренная индексом).
Наскотлько велика длина BitString? И как много строк?
Для ограниченного по длине BitString (скажем, меньше 128 байт), GiST opclass
реализовать не так трудно. GIN проще - фактически, extract_* методды, которые
должны возвращать массив номеров установленных битов.
>
> Сейчас функциональность флагов можно реализовать через hstore или
> intarray при желании.
> Но это ведет к очень большому перерасходу места в таблицах (hstore
> совсем большой перерасход и в индексе и в самом поле в зависимости от
> длинны ключей... intarray 32х кратный overhead по размеру поля и наверно
> такой же по размеру индекса)
Индекс GIN будет такого же размера - момер установленного бита есть номер.
--
Teodor Sigaev E-mail: teodor@sigaev.ru
WWW: http://www.sigaev.ru/