2016-10-04 46 views
0

我在我的表中有更多的300,000行。我想删除重复的行和相同的数据。 所以我运行这些查询。如何减少mysql查询的内存和CPU使用率?

$sql=mysql_query("SELECT DISTINCT n1.id FROM dv2xp_adsmanager_ads n1, dv2xp_adsmanager_ads n2 WHERE n1.id < n2.id AND n1.ad_imgone = n2.ad_imgone AND n1.ad_text = n2.ad_text LIMIT $start,$limit "); 

这些查询可以显示重复row.But这是很慢的,我的服务器上增加了杯使用率达到100%。 如何解决这些解决方案?

回答

0

不知道你正在使用的数据太多,我最好的猜测是你可以使用INNER和OUTER JOIN。 DISTINCT将根据主键带来独特的结果,但是如果您有多个包含多个键的表,结果可能不是最优的。出于这个原因,最好使用JOIN来从每个表中提取基本数据。

这是一个很好的文章有关联接:What is the difference between “INNER JOIN” and “OUTER JOIN”?

我希望这个信息帮助,并让你在正确的方向。