MYSQL裡有五百萬數據,但大多是重復的,真實的就180萬,於是想怎樣把這些重復的數據搞出來,在網上找了一圈,好多是用NOT IN這樣的代碼,這樣效率很低,自己琢磨組合了一下,找到一個高效的處理方式,用這個方式,五百萬數據,十來分鐘就全部去除重復了,請各位參考。
第一步:從500萬數據表data_content_152裡提取出不重復的字段SFZHM對應的ID字段到TMP3表
create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;
第二步:創建新表RES
CREATE TABLE `res` ( `id` int(11), `sfz` char(20) ) ENGINE=MyISAM;
第三步:把TMP3表ID對應到data_content_152裡需要提取的數據添加到RES表的SFZ字段
INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1
至此,就在MYSQL裡實現了,給數據表data_content_152完全刪除重復數據,把去重復後的數據導入到RES表。