Heim > Backend-Entwicklung > PHP-Tutorial > [] 千万级的表如何去重复

[] 千万级的表如何去重复

WBOY
Freigeben: 2016-06-13 13:40:06
Original
1138 Leute haben es durchsucht

[求助] 千万级的表怎么去重复?
一直都是在折腾万级别的小小数据库,不知道索引、数据类型等的不同会对效率有多大影响。最近不是密码 泄露吗?就下了个,导入mysql数据库,共两千多万条记录,只留密码字段,其他字段全部删除,进行select、insert等测试,有了索引select的效率明显不同,但在去重复时遇到难题。

方法一:
CREATE TABLE newtable SELECT DISTINCT pwd FROM oldtable
这种方式看起来效率最高,但运行时直接把机器拖死,内存一会儿就用完了。

方法二:
逐条获取再删除重复(每次提取$num条记录,我的$num=50)
  $result = mysql_query("SELECT MIN(id), pwd FROM tablename WHERE id BETWEEN $id AND $num GROUP BY pwd");
  while($row = mysql_fetch_row($result)){
  mysql_query("DELETE FROM tablename WHERE id>$row[0] AND pwd='$row[1]'");
  }
  $id += $num;
再通过地址栏或cookie等传递$id,效率太低,处理了100分钟,才删除了30多万条重复

请问我应该怎么做,效率才会更高?谢谢

------解决方案--------------------
创建临时表方法好
之前一般建议别人这样操作,但不一定能听进去,小数据量倒无所谓
http://topic.csdn.net/u/20111225/22/7cabedc3-5e9e-42b3-b05b-153ba5a5a67f.html


操作时候占资源是必须的,,不可避免。。。。。除非你乐意慢慢等待
------解决方案--------------------
2100w,不知道加unique效率如何,你可试下

SQL code
alter ignore table mypwd add unique(pwd);
alter table mypwd drop index pwd;
<br><font color="#e78608">------解决方案--------------------</font><br>用临时表吧。create temporary table ....
<br><font color="#e78608">------解决方案--------------------</font><br>试试:<br><br>新建表,设定唯一字段。<br>导出sql文件。  <br>重新source导入.
<br><font color="#e78608">------解决方案--------------------</font><br>你可以建唯一键。不要索引。 重复直接报错忽略。<br><br>select内存不够进,仍要存盘。 而且有distinct. 还要对比重复。 应没有source快。
<br><font color="#e78608">------解决方案--------------------</font><br>
Nach dem Login kopieren
探讨

引用:

你可以建唯一键。不要索引。 重复直接报错忽略。

select内存不够进,仍要存盘。 而且有distinct. 还要对比重复。 应没有source快。

请看我在7楼的回复,如果不给pwd字段建索引,7楼的效率就非常高了,110秒处理完。是在SQLyog中实现的
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage