我现在有5个5千万记录的表A,B,C,D,E
还有一张目标表T(userid,A1,A2,B1,B2,C1,C2,D1,D2,E1,E2)里面的字段来自上面5个表每个表2个字段,上面5个表的数据通过userid关联现在我要把5个表的数据抽取到我的T表中去。
方法一:去关联5个表,然后插入到T表中去,此方法需要关联5个5千万的表,比较吓人
方法二:
先插入A表字段userid,A1,A2的5千万记录,其他字段用0代替
再插入B表字段userid,B1,B2的5千万记录,其他字段用0代替
再插入C表字段userid,C1,C2的5千万记录,其他字段用0代替
再插入D表字段userid,D1,D2的5千万记录,其他字段用0代替
再插入E表字段userid,E1,E2的5千万记录,其他字段用0代替
上面插入全是在一个中间表中,那么这个中间表就产生了25千万条记录,然后我再
insert into T values(userid,sum(A1),sum(A2),sum(B1),sum(B2),sum(C1),sum(C2),sum(D1),sum(D2),sum(E1),sum(E2)) group by userid;这样就可以得到我要的数据,但是这样是对25千万条数据做了很多次的sum计算,估计性能也很吓人现在要问的是,上面哪种办法稍微好点,为了不吓人,请教大家有没有好的办法帮我实现下,请讲个思路,在线等待

解决方案 »

  1.   

    2亿5千万行 group by 的话,挺吓人的说。
    5个表建好索引的话,第一种方法,比较实用的说。 
      

  2.   

    第1种办法差不多就是
    insert into T 
      select a.a1,a.a2,b.b,b.b2,c.c1,c.c2,d.d1,d.d2,e.e1,e.e2 
      from a,b,c,d,e 
      where a.userid=b.userid and b.userid=c.userid and c.userid=d.userid and d.userid=e.userid
    然后就是在userid 上建立索引
    这个估计比较的慢哦