테이블 조인 설정 변경으로 쿼리 튜닝


튜닝에 앞서…

MySql과 MariaDB에서 두 개 테이블의 데이터를 결합하는 조인 알고리즘은

대부분 중첩 루프 조인으로 풀린다. 물론 성능 최적화를 위해 다른 조인

알고리즘을 제공하기는 하지만, 상당수의 조인 방식은 여전히 중첩루프 조인에

기반을 둔다.



튜닝 전

위 쿼리문에서 보면 서브쿼리 쪽에 많은 join문이 있는걸 알 수 있다.

그리고 WHERE 절에 여러 조건을 추가했다.

여기서 든 생각 처음에 최대한 DB 스캔 범위를 줄이면 어떨까?



튜닝 전

위 쿼리문에서는 튜닝 전과 다르게 처음 부터 DB 스캔범위를 줄여나갔다.

뿐만 아니라 JOIN문 내에서 서브쿼리를 활용해 필요한 컬럼만 선택했다.



튜닝 전 후 비교

약 1초가 줄어듬을 확인할 수 있었다.

 튜닝 전튜닝 후
1회4.2083.498
2회3.8931.682
3회3.9903.201
4회3.9233.204
5회3.8673.265
평균3.982.97

추가적으로 EXPLAIN 결과 또한 엄청 줄어든것을 확인할 수 있다.

튜닝 전


튜닝 후