테이블 조인 설정 변경으로 쿼리 튜닝
in SQL
튜닝에 앞서…
MySql과 MariaDB에서 두 개 테이블의 데이터를 결합하는 조인 알고리즘은
대부분 중첩 루프 조인으로 풀린다. 물론 성능 최적화를 위해 다른 조인
알고리즘을 제공하기는 하지만, 상당수의 조인 방식은 여전히 중첩루프 조인에
기반을 둔다.
튜닝 전
위 쿼리문에서 보면 서브쿼리 쪽에 많은 join문이 있는걸 알 수 있다.
그리고 WHERE 절에 여러 조건을 추가했다.
여기서 든 생각 처음에 최대한 DB 스캔 범위를 줄이면 어떨까?
튜닝 전
위 쿼리문에서는 튜닝 전과 다르게 처음 부터 DB 스캔범위를 줄여나갔다.
뿐만 아니라 JOIN문 내에서 서브쿼리를 활용해 필요한 컬럼만 선택했다.
튜닝 전 후 비교
약 1초가 줄어듬을 확인할 수 있었다.
튜닝 전 | 튜닝 후 | |
---|---|---|
1회 | 4.208 | 3.498 |
2회 | 3.893 | 1.682 |
3회 | 3.990 | 3.201 |
4회 | 3.923 | 3.204 |
5회 | 3.867 | 3.265 |
평균 | 3.98 | 2.97 |
추가적으로 EXPLAIN
결과 또한 엄청 줄어든것을 확인할 수 있다.
튜닝 전
튜닝 후