We do something similar with compressing integers. Unlike the article we pick from 3 different compression schemes: SIMD FastPFOR, Bitpack (max value) and delta encoding.<p>Which one we pick depends on the distribution of the integers. FastPFOR we use when the values are mostly smallish but there's an occasional large value. Works great. Bitpack we use when there is a tight band (ex. all values are ~5 -> ~7 bits). Delta works well for (mono) increasing values.<p>Also, we've adapted most of these to 64bit integers since we work with those more commonly.
How about using a bitlist/bitmap/bitset/bitstring/bitarray, maybe even a compressed one, like roaring-bitsets ?<p>Edit: question: is there any type of index better than compressed bitsets when you have per-column index and you want to AND,OR, basically combine them ?