我有以下表,每个表都有多个记录(〜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。