方法一: 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多万条重复
请问我应该怎么做,效率才会更高?谢谢
------解决方案-------------------- 另建一表,创建主键,然后直接 insert into 另建一表 select * from oldtable
------解决方案-------------------- 先拷贝表,然后删除字段,这样快,而且不占内存。
------解决方案-------------------- 先用定制的select <> group by pwd INTO <outfile> 然后再load data into <newtable>呢 只要前边的select能保证速度,那么应该可行。
------解决方案--------------------