rqrq
2014-01-30 15:33:30 +08:00
第一个问题:
一张表2亿数据,加字段就要等半天,还要计算md5,然后再去重的话……
其实可以先把10张表的数据汇总到一张表new_tbl_all(事先加上id+name的普通联合索引)
然后再建一张不加索引的最终表new_tbl_final
再执行以下sql语句
INSERT INTO new_tbl_final (id, name) SELECT id, name FROM new_tbl_all WHERE id <= 五百万 GROUP BY id, name
自己控制这条sql语句,修改id的值就行(五百万的话,大概要执行400次……)
当然作为一只程序员怎么能容忍手动控制,写个类似分页的脚本让它自己跑吧。
最后再往new_tbl_final表加索引(等吧)
说句题外话,分表不是真正的解决性能问题,维护或者需求有变动就带来各种麻烦。
简单几个字段的话,20亿放到一张表mysql也没问题啊,只要索引正确。
即便性能不行,也可以尝试下表分区,再不行就上pgsql,总会有办法的。
第二个问题:
当然是用lucene、sphinx这种全文引擎,便宜量又足。