8. A computer system for performing a database join, comprising: a memory; and a processor, configured to: receive a query specifying a join of a first table and a second table; generate a mapping that maps, for a plurality of tuples of the join, a first column of a first table to a second column of a second table; determine a new predicate for the query based on the mapping; and modify the query such that the query comprises the new predicate, wherein the mapping comprises a bit map, and wherein generating the mapping comprises: determining a plurality of potential value pairs between the first column and the second column; determining a plurality of actual value pairs in a plurality of tuples resulting from the join query; and setting a bit in the bit map to 1 for each of the plurality of actual value pairs.
8. A computer system for performing a database join, comprising: a memory; and a processor, configured to: receive a query specifying a join of a first table and a second table; generate a mapping that maps, for a plurality of tuples of the join, a first column of a first table to a second column of a second table; determine a new predicate for the query based on the mapping; and modify the query such that the query comprises the new predicate, wherein the mapping comprises a bit map, and wherein generating the mapping comprises: determining a plurality of potential value pairs between the first column and the second column; determining a plurality of actual value pairs in a plurality of tuples resulting from the join query; and setting a bit in the bit map to 1 for each of the plurality of actual value pairs. 9. The computer system recited in claim 8 , wherein the processor is configured to execute the modified query.