MySQL向一个新表写入一个包含200万条记录的查询


MySQL writing a query with 2 million records to a new table

我有5个表,每个表有180万到200万条记录,每个表都有重叠的列。

我正在尝试填充一个只有&我需要的记录,但在我的估计我的查询将需要1.7天完成。

我已经扩展了apache, mysql和php的内存使用在GB范围内,并设置任何和所有的超时在10天的区域。

那么,我的问题是填充这个新表的最好方法是什么?一旦我完成,我可以删除表1,2,3,4 &;

这是我的查询:

insert into new_table 
(col1,col2,col3,col4,col5,col6,col7,col8,col9)
select 
t1.col1,t.2col2,t.3col3,.t4col4,t5.col5,t1.col6,t1.col7,t2.col8,t3.col9
from
table1 as t1,
table2 as t2,
table3 as t3,
table4 as t4,
table5 as t5
where
t1.col1 = t2.col1
and
t1.col1 = t3.col1,
and
t1.col1 = t4.col1,
and
t1.col1 = t5.col1

幸运的是这非常简单。可以将SELECT查询添加到CREATE TABLE

CREATE TABLE newtable SELECT t1.c1,t2.c2,t3.c3,t4.c4,t5.c5 FROM t1
INNER JOIN t2 ON t1.c1 = t2.c1
INNER JOIN t3 ON t1.c1 = t3.c1
INNER JOIN t4 ON t1.c1 = t4.c1
INNER JOIN t5 ON t1.c1 = t5.c1

等等,但是您当前正在创建当前的SELECT语句。我使用显式连接,因为我认为它们更容易理解,但你的查询也会起作用。您可能还想添加一个PRIMARY KEY,但是您总是可以在之后修改表来完成此操作。

ALTER TABLE newtable ADD PRIMARY KEY(c1);

就是这样!你就完成了。