본문으로 건너뛰기

SQL튜닝 기법 요약


누군가가 만든 한방쿼리로 인해서 심각한 병목현상이 발생했다.
급하게 집에 굴러다니는 서적을 찾아보고 메모한다..


효율 좋게 검색을 이용하자

  • 서브쿼리로 인수값을 받을때는 IN 보다는 EXISTS를 쓰자
  • 서브쿼리로 인수값을 받을때는 IN 보다는 결합을 사용하자

정렬을 될 수 있음 회피하자

  • 결합 연산잔의 ALL옵션을 잘 쓰자
  • DISTINCT 대신에 EXISTS를 쓰는 것을 고려해보자
  • 최대 최소값(MIN/MAX)을 인덱스로 사용해보자
  • WHERE절에 쓰는 조건은 HAVING절에 쓰지 않는다
  • GROUP BY절과 ORDER BY절에서 인덱스를 사용하자

인덱스가 정말로 사용되고 있는지 확인하자

  • 검색열에서 연산을 하고 있을 때
  • IS NULL을 사용하고 있을 때
  • 부정형을 사용하고 있을 때
  • OR을 사용하고 있을 때
  • 결합 색인일 경우 열의 순번을 잘못 파악하고 있을 때
  • 후방 일치, 혹은 중간 일치의 LIKE를 사용하고 있을 때
  • 암묵적 형변환을 하고 있을 때

중간 테이블을 줄이자

  • HAVING절을 활용하자
  • IN으로 복수의 키를 이용할 경우, 한곳으로 정리하자
  • 집약 보다는 결합을 먼저 이행하도록
  • 뷰의 이용은 계획적으로만 사용하자