【发布时间】:2014-05-08 00:35:16
【问题描述】:
我有 5 个表,每个表有 1.8 到 200 万条记录,每个表都有重叠的列。
我正在尝试用我需要的列和记录填充一个新表,但我估计我的查询需要 1.7 天才能完成。
我已将 apache、mysql 和 php 内存使用扩展到 GB 范围内,并将所有超时设置为 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
【问题讨论】:
-
每个表的
col1上是否有索引,还是主键? -
表(col1)上是否有索引?
-
数据一团糟,所以它在任何表上都没有主键或索引。
-
1.使您的联接显式,而不是隐式。 2. 如果您在用于连接的列上没有索引,请在这些列上放置索引。 3. 这听起来根本不需要 PHP 或 Apache,最好不要。
-
我正在使用 MySQL Workbench,php 将使用创建的新表。