본문 바로가기
Q&A2018년 2월 20일1분 읽기

MySQL 서브쿼리 vs 조인 성능 차이

개
개발자준호
조회 2865댓글 3

같은 결과를 내는 쿼리를 서브쿼리로 작성할 수도 있고 JOIN으로 작성할 수도 있는데, 성능 차이가 있나요?

특히 대용량 테이블에서 어떤 게 더 빠른지 궁금합니다.

EXPLAIN으로 실행 계획을 비교해봤는데 해석이 어렵습니다.

댓글 3

코코딩하는민수8년 전

일반적으로 JOIN이 서브쿼리보다 빠릅니다. MySQL 옵티마이저가 JOIN을 더 잘 최적화하거든요. 특히 상관 서브쿼리(correlated subquery)는 행마다 실행되므로 매우 느릴 수 있습니다.

개개발자준호코딩하는민수8년 전

그렇군요! 상관 서브쿼리를 JOIN으로 변환하니 실행 시간이 10초에서 0.3초로 줄었습니다. 감사합니다!

DDBA(guest)8년 전
MySQL 5.6 이후로는 서브쿼리 최적화가 많이 좋아졌지만, 여전히 EXPLAIN으로 확인하는 습관을 들이세요. type 컬럼에서 ALL은 풀스캔이고 ref나 eq_ref가 나오면 좋은 겁니다.
Ctrl+Enter로 등록