A computer program product, being operable to cause data processing apparatus to perform operations comprising: generating columns of dictionary-based compression values, the columns of dictionary-based compression values being based on a dictionary (130, 172) of possible values for each column of a column-based database table and being structured business data; sorting the columns such that a first column ordered first in an ordering of the columns has a most-frequently occurring value of the first column occurring more frequently than most-frequently occurring values of other columns (612, 614, 616, 618, 620, 622, 624, 626) and such that a column ordering is given by the frequency of the most frequent values so that the column with most most-frequently occurring values is first and the column with fewest most-frequently occurring values is last; sorting the first column and thus the rows of the table such that instances of the most-frequently occurring value of the first column are at one end of the first column; sorting the rows corresponding to the most frequently occurring values of the first column by sorting at least one of the other columns (612, 614, 616, 618, 620, 622, 624, 626) such that instances of most-frequently occurring values of the at least one of the other columns (612, 614, 616, 618, 620, 622, 624, 626) are at the one end of the respective other columns (612, 614, 616, 618, 620,622,624,626); generating a bit vector for at least one of the columns, each of the bit vectors representing most-frequently occurring values of a respective column, the generating comprising having each bit of a bit vector represent whether a most-frequently occurring value exists if the most-frequently occurring value exists in a respective row of a respective column; generating a number for each of the columns having an associated bit vector, the number representing an amount of occurrences of a most-frequently occurring value at the one end of the respective column; removing from each of the bit vectors a representation of the most-frequently occurring value of one end of a respective column based on the number associated with a bit vector; and storing the one or more numbers for each of the one or more bit vectors to enable non-volatile memory searches of the data represented by each of the numbers and the bit vectors. generating columns of dictionary-based compression values, the columns of dictionary-based compression values being based on a dictionary (130, 172) of possible values for each column of a column-based database table and being structured business data; sorting the columns such that a first column ordered first in an ordering of the columns has a most-frequently occurring value of the first column occurring more frequently than most-frequently occurring values of other columns (612, 614, 616, 618, 620, 622, 624, 626) and such that a column ordering is given by the frequency of the most frequent values so that the column with most most-frequently occurring values is first and the column with fewest most-frequently occurring values is last; sorting the first column and thus the rows of the table such that instances of the most-frequently occurring value of the first column are at one end of the first column; sorting the rows corresponding to the most frequently occurring values of the first column by sorting at least one of the other columns (612, 614, 616, 618, 620, 622, 624, 626) such that instances of most-frequently occurring values of the at least one of the other columns (612, 614, 616, 618, 620, 622, 624, 626) are at the one end of the respective other columns (612, 614, 616, 618, 620,622,624,626); generating a bit vector for at least one of the columns, each of the bit vectors representing most-frequently occurring values of a respective column, the generating comprising having each bit of a bit vector represent whether a most-frequently occurring value exists if the most-frequently occurring value exists in a respective row of a respective column; generating a number for each of the columns having an associated bit vector, the number representing an amount of occurrences of a most-frequently occurring value at the one end of the respective column; removing from each of the bit vectors a representation of the most-frequently occurring value of one end of a respective column based on the number associated with a bit vector; and storing the one or more numbers for each of the one or more bit vectors to enable non-volatile memory searches of the data represented by each of the numbers and the bit vectors.