본문으로 건너뛰기

SQL튜닝 기법 요약


급한데로 갖고있던 서적을 읽고 요약..

프로젝트에서 SQL이 너무 느려서 병목현상이 발생했다.
누군가가
서브쿼리 + with + 여러개의 내부조인 + 여러개의 외부조인 + 집계함수 를
잔뜩 써서 그것으로 view를 만들었고(흔히 말하는 한! 방! 쿼! 리!)
그 view에서 데이터를 가져오다보니... 느릴 수 밖에 없었다.

어찌어찌 하다가 내가 이부분을 담당하게 되었고, 튜닝을 하게되었다.
튜닝기법은 여러가지 자료들이 많고, 어느정도 깊이있게 공부 할 필요도 있다고 판단해서
앞으로 계속 자료를 수집한다.

집에 굴러다니는 어느책에서..


효율 좋게 검색을 이용하자

서브쿼리로 인수값을 받을때는 IN 보다는 EXISTS를 쓰자

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

정렬을 될 수 있음 회피하자

결합 연산잔의 ALL옵션을 잘 쓰자

DISTINCT 대신에 EXISTS를 쓰는 것을 고려해보자

최대 최소값(MIN/MAX)을 인덱스로 사용해보자

WHERE절에 쓰는 조건은 HAVING절에 쓰지 않는다

GROUP BY절과 ORDER BY절에서 인덱스를 사용하자

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

검색열에서 연산을 하고 있을 때

IS NULL을 사용하고 있을 때

부정형을 사용하고 있을 때

OR을 사용하고 있을 때

결합 색인일 경우 열의 순번을 잘못 파악하고 있을 때

후방 일치, 혹은 중간 일치의 LIKE를 사용하고 있을 때

암묵적 형변환을 하고 있을 때

중간 테이블을 줄이자

HAVING절을 활용하자

IN으로 복수의 키를 이용할 경우, 한곳으로 정리하자

집약 보다는 결합을 먼저 이행하도록

뷰의 이용은 계획적으로만 사용하자