我的表中有超过 300,000 行。我想删除重复的行和相同的数据。 所以我运行这些查询。
$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 ");
这些查询可以显示重复的行。但这非常慢,并且在我的服务器上将杯子使用率增加到 100%。 如何解决这些问题?
最佳答案
在不了解您正在使用的数据的情况下,我最好的猜测是您可以使用 INNER 和 OUTER JOIN。 DISTINCT 将根据主键带来不同的结果,但如果您有多个具有多个键的表,结果可能不是最佳的。因此,最好使用 JOIN 以便仅从每个表中获取基本数据。
这是一篇关于 JOIN 的好文章:What is the difference between “INNER JOIN” and “OUTER JOIN”?
我希望这些信息对您有所帮助,并为您指明正确的方向。
关于php - 如何减少mysql查询的内存和cpu使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39843992/