1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

整理标题重复的数据[严肃版|优化版]

本帖由 harbinbeer2006-07-10 发布。版面名称:源码讨论

  1. harbinbeer

    harbinbeer New Member

    注册:
    2006-06-10
    帖子:
    88
    赞:
    0
    代码:
    /****建立临时表****/
    create table phome_ecms_news_temp (id int(11) NOT NULL , classid smallint(6) NOT NULL, onclick int(11) NOT NULL, newspath varchar(50) NOT NULL, keyboard varchar(255) NOT NULL, keyid varchar(255) NOT NULL, userid int(11) NOT NULL, username varchar(30) NOT NULL, ztid text NOT NULL, checked tinyint(1) NOT NULL, istop tinyint(4) NOT NULL, truetime int(11) NOT NULL, ismember tinyint(1) NOT NULL, dokey tinyint(1) NOT NULL, userfen int(11) NOT NULL, isgood tinyint(1) NOT NULL, titlecolor varchar(10) NOT NULL, titlefont varchar(255) NOT NULL, titleurl varchar(200) NOT NULL, filename varchar(60) NOT NULL, filenameqz varchar(28) NOT NULL, fh tinyint(1) NOT NULL, groupid smallint(6) NOT NULL, newstempid smallint(6) NOT NULL, plnum int(11) NOT NULL, firsttitle tinyint(1) NOT NULL, checkuser text NOT NULL, docheckuser text NOT NULL, viewcheckuser text NOT NULL, returncheck tinyint(1) NOT NULL, notdocheckuser text NOT NULL, totaldown int(11) NOT NULL, title varchar(200) NOT NULL, newstime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, titlepic varchar(200) NOT NULL, wplay tinyint(1) NOT NULL, ftitle varchar(200) NOT NULL, smalltext text NOT NULL, writer varchar(30) NOT NULL, befrom varchar(60) NOT NULL, newstext mediumtext NOT NULL, closepl tinyint(1) NOT NULL, havehtml tinyint(1) NOT NULL, PRIMARY KEY (title), KEY classid (classid));
    /****将原有数据导入临时表****/
    insert ignore into phome_ecms_news_temp select distinct * from phome_ecms_news;
    /****更改临时表主键为id****/
    alter table phome_ecms_news_temp drop primary key, add primary key(id);
    /****更改id属性为auto_increment****/
    alter table phome_ecms_news_temp change id id int(11) not null auto_increment;
    /****用重命名的方式备份原数据表****/
    alter table phome_ecms_news rename phome_ecms_news_bak;
    /****将临时表改名为phome_ecms_news****/
    alter table phome_ecms_news_temp rename phome_ecms_news;
    
    如果成功,在下次整理前先运行
    代码:
    drop table phome_ecms_news_bak;
    
    删除原有备份的表,再执行第一步操作。

    这个比昨天的少了一步倒回数据的操作,所以可以节省近一倍的时间。
     
  2. KissVenus

    KissVenus New Member

    注册:
    2006-03-10
    帖子:
    72
    赞:
    0
    没看懂