A join query processing method to be performed by a join query processing apparatus comprising a master node, a worker node and a distributed file system, comprising: Determining, by the master node, a frequent table combination, wherein the frequent table combination is a table combination whose emergence frequency in a historical query record is greater than a preset value, and the table combination comprises a join key and tables that are joined by using the join key; Creating, by the master node, a clustered index according to information about the join key in the frequent table combination, wherein a quantity of index columns in the clustered index is the same as a quantity of join keys in the frequent table combination, and the clustered index is used to indicate a storage location of records that have a same index column value in the frequent table combination; and Performing, by the worker node controlled by the master node, a shuffle operation according to the index columns in the clustered index, and centrally saving, in the distributed file system so that join key values of data in the data block are concentrated, the records that have the same index column value into at least one data block to form a table cluster corresponding to the frequent table combination, wherein the records that have the same index column value are records in the tables that are joined by using the join key, wherein after the performing a shuffle operation according to the index columns in the clustered index, and centrally saving the records that have the same index column value into the at least one data block, the method further comprises: receiving a query request, wherein the query request comprises a to-be-queried table combination; searching for a to-be-queried table cluster corresponding to the to-be-queried table combination; grouping records that have a same hash value of the index column value in each data block that is comprised in a node corresponding to the to-be-queried table cluster into one bucket separated from records of different hashes; and transmitting records grouped in a same bucket to a same data node. Determining, by the master node, a frequent table combination, wherein the frequent table combination is a table combination whose emergence frequency in a historical query record is greater than a preset value, and the table combination comprises a join key and tables that are joined by using the join key; Creating, by the master node, a clustered index according to information about the join key in the frequent table combination, wherein a quantity of index columns in the clustered index is the same as a quantity of join keys in the frequent table combination, and the clustered index is used to indicate a storage location of records that have a same index column value in the frequent table combination; and Performing, by the worker node controlled by the master node, a shuffle operation according to the index columns in the clustered index, and centrally saving, in the distributed file system so that join key values of data in the data block are concentrated, the records that have the same index column value into at least one data block to form a table cluster corresponding to the frequent table combination, wherein the records that have the same index column value are records in the tables that are joined by using the join key, wherein after the performing a shuffle operation according to the index columns in the clustered index, and centrally saving the records that have the same index column value into the at least one data block, the method further comprises: receiving a query request, wherein the query request comprises a to-be-queried table combination; searching for a to-be-queried table cluster corresponding to the to-be-queried table combination; grouping records that have a same hash value of the index column value in each data block that is comprised in a node corresponding to the to-be-queried table cluster into one bucket separated from records of different hashes; and transmitting records grouped in a same bucket to a same data node. receiving a query request, wherein the query request comprises a to-be-queried table combination; searching for a to-be-queried table cluster corresponding to the to-be-queried table combination; grouping records that have a same hash value of the index column value in each data block that is comprised in a node corresponding to the to-be-queried table cluster into one bucket separated from records of different hashes; and transmitting records grouped in a same bucket to a same data node.