A computer-implemented method comprising: accessing a column of compressed data in a table, the accessing comprising seeking one or more specific values in the column without decompressing the column, wherein a plurality of values in the column is stored in a specific order in a dictionary and bit-compressed links are saved as index vector (102, 116), wherein each value in the index vector (102, 116) is represented by two bits in the dictionary, and if a value of the plurality of values occurs in more than approximately 90% of all rows, applying sparse coding to the index vector (102, 116), wherein all occurrences of the most frequently occurring value are deleted from the index vector (102, 116) to obtain a compressed index vector storing all remaining values that are different to the most frequently occurring value and the position of each of the plurality of values in the index vector (102, 116) is stored in a bit vector, whereby a bit is set in the bit vector if the value of the corresponding row in the index vector (102, 116) is not the most frequently occurring value; dividing the data in the column into a plurality of blocks of a fixed length; initializing an additional data structure comprising a prefix storing for each of the blocks of values in the column the total of bits set in corresponding previous blocks, wherein a row number may be located in the prefix; determining a block number for a target block of the plurality of blocks by checking whether or not the corresponding row to be read is located in the prefix; if the row to be read is located in the prefix, returning a corresponding prefix value of the prefix; and if the row to be read is not located in the prefix, testing the corresponding bit in the bit vector, wherein if said bit is not set, returning the most frequently occurring value, and wherein if said bit is set, calculating the corresponding position in the compressed index vector by counting the bits in the bit vector and extracting the associated value from the column. accessing a column of compressed data in a table, the accessing comprising seeking one or more specific values in the column without decompressing the column, wherein a plurality of values in the column is stored in a specific order in a dictionary and bit-compressed links are saved as index vector (102, 116), wherein each value in the index vector (102, 116) is represented by two bits in the dictionary, and if a value of the plurality of values occurs in more than approximately 90% of all rows, applying sparse coding to the index vector (102, 116), wherein all occurrences of the most frequently occurring value are deleted from the index vector (102, 116) to obtain a compressed index vector storing all remaining values that are different to the most frequently occurring value and the position of each of the plurality of values in the index vector (102, 116) is stored in a bit vector, whereby a bit is set in the bit vector if the value of the corresponding row in the index vector (102, 116) is not the most frequently occurring value; dividing the data in the column into a plurality of blocks of a fixed length; initializing an additional data structure comprising a prefix storing for each of the blocks of values in the column the total of bits set in corresponding previous blocks, wherein a row number may be located in the prefix; determining a block number for a target block of the plurality of blocks by checking whether or not the corresponding row to be read is located in the prefix; if the row to be read is located in the prefix, returning a corresponding prefix value of the prefix; and if the row to be read is not located in the prefix, testing the corresponding bit in the bit vector, wherein if said bit is not set, returning the most frequently occurring value, and wherein if said bit is set, calculating the corresponding position in the compressed index vector by counting the bits in the bit vector and extracting the associated value from the column.