本帖最后由 Triven 于 2013-10-19 17:19 编辑
主要解决大家用户表优化后,主表和存档表数据重复的问题。并且删除存档表。
1.首先在后台计划任务关闭每日用户表优化。
2.操作数据库,我也只是看的教程,下面是我的论坛操作的步骤
下面例子主表为pre_common_member,存档表为pre_common_member_archive,临时表1为temp_triven,临时表2为pre_common_member_t
select count(*) from pre_common_member_archive;
创建存档表索引
create index ind_b2kw_c1 on pre_common_member_archive(uid);
创建临时表1(将临时表2数据复制到临时表1)(临时表2为复制的主表,保留结构清空数据)
create table temp_triven select * from pre_common_member_t where 1=2;
主表数据放入临时表1
insert into temp_triven select * from pre_common_member;
存档表数据放入临时表1
insert into temp_triven select * from pre_common_member_archive;
select count(*) from temp_triven;
创建临时表1索引
create index ind_temp_c123 on temp_triven(uid,email,username);
更改索引数据,去掉重复数据
explain select uid,email,username,max(if_robot) from temp_triven FORCE INDEX (ind_temp_c123) group by uid,email,username ;
将最终数据写入临时表2
insert into pre_common_member_t select uid,email,username,max(if_robot) from temp_triven FORCE INDEX (ind_temp_c123) group by uid,email,username ;
删除临时表1
drop table temp_triven;
create index ind_c2kw_c1 on pre_common_member_t(uid);
create index ind_c2kw_c2 on pre_common_member_t(email);
create index ind_c2kw_c3 on pre_common_member_t(username);
清空主表数据
truncate table pre_common_member;
情况存档表数据
truncate table pre_common_member_archive;
3.将临时表2名称修改为pre_common_member
以防万一,修改前备份数据库!!!关站操作!
|