MYSQL教程mysql表删除重复记录方法与效率对比分析
《MYSQL教程mysql表删除重复记录方法与效率对比分析》要点: MYSQL必读在虚拟机上做删除mysql表中重复记录的测试,表结构如下: ? USE `test`; ? /*Table structure for table `test` */ ? DROP TABLE IF EXISTS `test`; ? CREATE TABLE `test` ( ? `id` int(11) NOT NULL AUTO_INCREMENT, ? `name` char(20) DEFAULT NULL COMMENT '姓名', ? `age` tinyint(4) DEFAULT NULL COMMENT '年龄', ? `mate` tinyint(4) DEFAULT '1' COMMENT '有无配偶(1-有 0-无)', ? PRIMARY KEY (`id`), ? KEY `idx_name` (`name`), ? KEY `idx_age` (`age`) ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; ? /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; ? MYSQL必读现有记录: (3,'bbbb',23, (4,'cccc',25,1), (5,'dddd',26, (6,'eeee',24, (7,'fffff',18, (8,40, (9,60,1); ? MYSQL必读想去掉name重名的记录,办法如下: alter table test add unique index (name); ? MYSQL必读这样当向表中添加相同记录的时候,会返回1062的添加失败信息. ? MYSQL必读它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化. MYSQL必读2.重建表办法一: ? /*Table structure for table `test` */ ? DROP TABLE IF EXISTS `uniq_test`; ? CREATE TABLE `uniq_test` ( ? `id` int(11) NOT NULL AUTO_INCREMENT, ? KEY `idx_age` (`age`) ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; ? MYSQL必读从test表中查找数据,添加到uniq_test中: drop table test; rename table uniq_test to test; MYSQL必读3.删除mysql重复记录法: ? `id` int(11), ? `name` char(20)? ) ENGINE=MyISAM; ? MYSQL必读如果要删除的记录不多的话,可以把这个表创建成内存表形式: ? `id` int(11), ? `name` char(20) ) ENGINE=HEAP; ? MYSQL必读然后在test表中删除重复记录: delete a.* from test a,tmp_ids b where b.name=a.name and a.id>b.id; truncate table tmp_ids; MYSQL必读4.效率低下的删除mysql重复记录的办法 ( SELECT * FROM? test GROUP BY name HAVING count(1) >1 order by null ) AS b WHERE a.name = b.name AND a.id > b.id; ? MYSQL必读总结: ? MYSQL必读历时15分钟,删除动作历时2分钟,系统负载3左右 欢迎参与《MYSQL教程mysql表删除重复记录方法与效率对比分析》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |