Patent ID: 8195644

Claim:
A method of performing a multiple join operation in a parallel processing system, including a plurality of processing modules, wherein the parallel processing system includes one or more processors, the method comprising: distributing a respective set of rows of a first table, a second table, and a third table involved in a join operation, to each of the plurality of processing modules, wherein the first table is at least larger than the second table and the join operation comprises a join on a column of the first table, a column of the second table, and a column of the third table; receiving, by each of the plurality of processing modules, a list of skewed values of the column of the first table, wherein the skewed values are not uniformly distributed among the plurality of processing modules by the distributing of the respective set of rows of the first table; redistributing, by each of the plurality of processing modules to at least another one of the plurality of processing modules, (i) one or more rows of the distributed respective set of rows involved in the joint operation that each has a value of the column of the first table that does not match any one of the skewed values, (ii) one or more rows of the distributed respective set of rows involved in the joint operation that each has a value of the column of the second table that does not match any one of the skewed values, and (iii) one or more rows of the distributed respective set of rows of the third table involved in the joint operation; locally maintaining, by a first processing module of the plurality of processing modules, one or more rows of the distributed respective set of rows that each has a value of the column of the first table that match one of the skewed values; duplicating, by a second processing module of the plurality of processing modules, one or more rows of the distributed respective set of rows that each has a value of the column of the second table that matches one of the skewed values, and performing the join operation by the plurality of the processing modules on the column of the first table, the column of the second table, and the column of the third table.