我有以下表,每个表都有多个记录(〜50k),并且表正在增长。

Table1
BatchID ID Record1

Table 2
BatchID ID Record2

Table 3
BatchID ID Record3

Table 4
BatchID ID Record4


以下查询将永远运行(因为联接是四个表的笛卡尔积)。

Select table1.batchid,
table1.ID,
table1.Record1,
table2.Record2,
Table3.Record3,
Table4.Record4
from Table1 JOIN Table 2
on table1.batchID = table2.batchID and table1.ID = table2.ID
JOIN table3
on table1.BatchID=table3.batchID and table1.ID = table3.ID
JOIN table4
on table1.ID = table4.ID and table1.batchID = table4.batchID


什么应该是做到这一点的最佳方法。

最佳答案

您实际上是否需要所有这些JOIN?您不能将这四个表合并在一起吗?

例如:

CREATE TABLE MergedTable (
    BatchID INT,
    ID INT,
    Record1 ... ,
    Record2 ... ,
    Record3 ... ,
    Record4 ... ,
    PRIMARY KEY (BatchID, ID)
)


接着:

INSERT INTO MergedTable <your query>


现在,您可以直接从MergedTable中进行SELECT,而无需任何JOIN。

10-08 04:41