본문 바로가기
IBSHEET

성능 좋은 SQL 쿼리 작성법(JOIN)

by 엘리후 2023. 6. 17.

1. OLTP 쿼리의 기본 - Nested Loops(중첩루프)Join 성능 이해

교환 법칙에 따라 INNER 조인은 조인순서와 상관없이 결과가 똑같다.

Nested Loops은 첫번째 검색 테이블에서 값을 조회 하고 두번째 검색 테이블에서 동일한 값을 찾아서 반환한다.

- 외부입력 : 검색행수가 더 적은 테이블이  - 첫번째 테이블

- 내부입력 : 조인하는 컬럼에 반드시 Index 사용(없으면 생성) SARG 준수 - 두번째 테이블

 

2. 조인 열 변형(사례 - 모델링 이슈)

ex) SELECT * FROM C TNNER JOIN P ON C.index = CONVERT(varchr(100),P.ID)

CONVERT함수 때문에 SARG 위반하여 index 사용이 불가하다.

- 내부입력 조인테이블에 속한 컬럼은 가공하지 않도록 한다.

- 가공하려면 외부 입력 테이블 컬럼을 가공하는 것이 좋다.

 

3. 불필요한 OUTER JOIN 미사용

- 쿼리 최적화에 방해 요소 : 옵티마이저가 동작하지 않아 조인 순서 강제

- 비즈니스/데이터적으로 필요한 경우에만 사용

 

4. WHERE절 조건식 순서

유지보수를 위한 권장

- 같은 테이블 별칭끼리 묶어서 연속으로 작성

- 검색 주인공은 선두 작성

댓글