2016-10-04 3 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 "); 

이 쿼리는 중복 된 행을 표시 할 수 있습니다. 그러나 내 서버에서이 기능은 매우 느리고 컵 사용량이 100 % 증가합니다. 이 솔루션을 해결하는 방법은 무엇입니까?

답변

0

사용중인 데이터에 대해 잘 모르면 내 생각에 INNER 및 OUTER JOIN으로 작업 할 수 있습니다. DISTINCT는 기본 키를 기반으로 고유 한 결과를 가져 오지만 여러 키가있는 여러 테이블이있는 경우 결과가 최적이 아닐 수 있습니다. 따라서 각 테이블의 필수 데이터 만 가져 오려면 JOIN을 사용하는 것이 좋습니다. 조인에 대해

이 좋은 기사입니다 What is the difference between “INNER JOIN” and “OUTER JOIN”?

나는이 정보가 도움이 올바른 방향으로 당신을두고 있기를 바랍니다.

관련 문제