1. A method, comprising: building, for a set of data comprising at least one data table comprising two or more rows and two or more columns where each of the two or more columns corresponds to a respective one of a plurality of attributes, at least one code table for each of the plurality of attributes in the set of data; selecting a first code table corresponding to a first attribute and a second code table corresponding to a second attribute; merging the first code table and the second code table into a merged code table; and determining whether to accept or reject the merged code table; wherein at least one of the building, selecting, merging and determining steps are performed by a processor device; wherein each code table comprises a dictionary for compressing one or more of the plurality of attributes; wherein each code table comprises: a first column specifying code words for attribute values; and at least a second column specifying feature sets corresponding to respective ones of the code words, each feature set specifying a bit length for encoding a given code word using the dictionary and a usage of the code word in the set of data; and wherein the determining step comprises: calculating a first compression cost for compressing the set of data, the first code table and the second code table; calculating a second compression cost for compressing the set of data and the merged code table; and comparing the first compression cost and the second compression cost.