제 쿼리친구들을 소개합니다

여행기 10만개, 태그 17개 기준 성능 비교

지금 현재는 가장 위의 쿼리를 사용 중이지만 더 좋은 성능의 쿼리로 대체하거나 개선할 수 있을 것 같다.

여행기는 테스트 데이터 10만 개를 삽입하고 태그는 실제 서비스와 동일하게 17개를 삽입해서 성능을 측정해 봤다.

태그 3개 필터 1 2 3 평균
JOIN 후 집계 0.224 0.229 0.224 0.225
IN 절 사용 0.130 0.134 0.131 0.131
다중 JOIN 0.042 0.048 0.042 0.044
EXISTS 사용 0.071 0.051 0.062 0.061
서브쿼리와 한번 JOIN 0.129 0.127 0.116 0.124
태그 1개 필터 1 2 3 평균
JOIN 후 집계 0.216 0.212 0.221 0.216
IN 절 사용 0.022 0.023 0.023 0.023
다중 JOIN 0.0018 0.0010 0.0010 0.0013
EXISTS 사용 0.0017 0.0018 0.0011 0.0015
서브쿼리와 한 번 JOIN 0.037 0.044 0.038 0.040

10만 개 기준으로 지금 현재 사용 중인 쿼리의 경우 고려한 5가지 쿼리 중 가장 저조한 성능을 보이고 있다.

당장 쿼리 중에선 다중 JOIN, 그 다음으로는 EXISTS를 사용하는 방법이 가장 빠르지만 모든 쿼리의 성능을 최대한으로 끌어올린 후 비교를 다시 진행해보자. 5가지 쿼리들의 실행계획을 분석하면서 복합 인덱스를 추가한다면 더욱 성능을 끌어올릴 수 있을 것 같다.

실행 계획 분석

여행기 10만개 기준

JOIN 후 집계

IN 서브쿼리

다중 JOIN

EXISTS