1. A method for compressing results of a join query, the method comprising: determining a join order of a result set from the join query, the result set comprising a plurality of tuples; maintaining a nested hierarchy of dictionaries based on the join order, wherein maintaining the nested hierarchy of dictionaries comprises: analyzing at least one element in at least one of the tuples; and if a value associated with the at least one element fails to exist in the nested hierarchy of dictionaries, adding the value to the nested hierarchy of dictionaries, wherein a structure of the nested hierarchy of dictionaries is organized based on the join order; using, by a processor, the nested hierarchy of dictionaries to encode each tuple of the tuples of the result set so as to produce an encode tuple, wherein the nested hierarchy of dictionaries comprises a set of leaf level dictionaries and a set of intermediate level dictionaries, the set of leaf level dictionaries mapping data tuple fragments to a first set of code, and the set of intermediate level dictionaries mapping a tuple created from the first set of code to a second set of code that is smaller than the first set of code; and transmitting each encoded tuple of the encoded tuples to a client system, wherein the transmitting comprises transmitting at least one encoded tuple with a set of dictionary entry information associated with that encoded tuple, the set of dictionary entry information indicating to the client system a location in a set of corresponding nested hierarchy of dictionaries to store the set of dictionary entry information.