작년에 SQL 튜닝을 해야했던 적이 있다.
성능이 너무 느려 튜닝작업을 했었는데, 아래의 팁을 토대로 튜닝을 진행하니 메인 페이지에 접속하는 속도가 7초에서 1초대로 떨어졌던 기억이 난다.
SQL 튜닝 팁은 다음과 같다.
- select 절에서 distinct는 피하자.
- where절 비교칼럼 데이터 타입은 일치시켜라
- outer join, is null을 이용한 안티조인보다는 not in, not exists를 사용
- outer join, union all로 full outer을 구현하기 보다는 full outer join을 사용
- in을 이용한 조인보다는 exists를 사용
- union 보다는 union all 을 사용
- 조인되는 건수가 작다면 일반적인 조인보다 스칼라 서브쿼리 사용 고려
- 인덱스 없이 count를 여러번 실행 시, 통합해서 count case 를 이용
- 인덱스 칼럼을 where절에서 사용 시 or로 union 체크
- 공통쿼리는 with 문으로 통합
- 그룹핑 시, having 보다는 where 절로 조건 검색
- 여러 칼럼으로 구성된 복합 인덱스 사용 시, index 힌트를 적절히 사용