160802、1.06s删除10w条重复记录只保留一条(mysql)及linux删除乱码文件

上次发表过的一遍删除重复记录的文章,其中最优的方案三删除1w条也花了0.07秒而2w条就已经花掉了4秒。今天进行了进一步优化,测试删除10w条只花了1.06秒。速度提升了很多。

建表语句

CREATE TABLE `test_user` (

  `id` INT(10) NOT NULL DEFAULT '0',

  `namea` VARCHAR(40) NOT NULL,

  `nameb` VARCHAR(40) NOT NULL,

  `user_id` VARCHAR(40) NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=INNODB DEFAULT CHARSET=utf8 ;

新方案:(其中user_id是重复字段,保留一条)

DELETE FROM test_user WHERE id NOT IN (SELECT id FROM (SELECT MAX(id) AS id FROM test_user GROUP BY user_id) X);

10000条删除9990    20000条删除19990      100000条删除199990
0.062sec           0.018sec                                 1.060sec

另外总结了一条删除linux乱码文件的方法:(其中红色部分就为inode(index node) ,-i选项用于显示inode)
[root@localhost test]# ls
?????.txt[root@localhost test]#  ls -lih
total 4.0K
1061229 -rw-r--r--. 1 root root 104 Jul 24 20:16 ?????.txt

[root@localhost test]# find . -inum 1061229 -exec rm {} -rf ;

[root@localhost test]# ls -l
total 0

原文地址:https://www.cnblogs.com/zrbfree/p/5736456.html