我有5个表,每个表有180到200万条记录,每个表都有重叠的列。
我正在尝试填充一个只包含列和列的新表格。记录我需要在估计中我的查询需要1.7天才能完成。
我在GB范围内扩展了apache,mysql和php内存使用,并将所有超时设置为10天的区域。
所以,我的问题是填充这个新表的最佳方法是什么? 一旦我完成,我可以删除表1,2,3,4和5为新表。
这是我的疑问:
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
答案 0 :(得分:2)
幸运的是,这很简单。您可以将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);
那就是它!你已经完成了。