2016-10-04 100 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」?

我希望這個信息幫助,並讓你在正確的方向。