search:

MySQL IN 성능 향상 (INNER JOIN으로 변경하기)

05 Mar 2014

안내

본 문서는 블로그의 운영자인 본인이 Stackoverflow에 올린 답변을 정리한 글입니다.

Stackoverflow URL

http://stackoverflow.com/questions/20311929/mysql-query-optimization/20311945

질문

다음과 같은 SQL문을 사용 중인데 속도가 너무 느리다.

SELECT SUM(earnings)
FROM earnings
WHERE account_number IN
    (SELECT account_number FROM users WHERE referred_by = 500);

빠르게 할 수 있는 방법은 없는가?

답변

다음과 같은 INNER JOIN으로 변경하는 것이 좋다.

SELECT SUM(earnings.earnings)
FROM earnings INNER JOIN users USING(account_number)
WHERE users.referred_by = 500;

또한 다음의 INDEX가 존재해야 한다.

ALTER TABLE users ADD INDEX (referred_by, account_number);
ALTER TABLE earnings ADD INDEX (account_number);

“MySQL” 카테고리의 추천 글