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절 조건식 순서
유지보수를 위한 권장
- 같은 테이블 별칭끼리 묶어서 연속으로 작성
- 검색 주인공은 선두 작성
'IBSHEET' 카테고리의 다른 글
성능 좋은 SQL 쿼리 작성법(차집합 NOT IN, CTE 재귀 호출 활용, 쿼리 힌트 사용 주의) (0) | 2023.06.18 |
---|---|
성능 좋은 SQL 쿼리 작성법(Subquery) (0) | 2023.06.18 |
[mysql] 조회, Index냐 Full Scan이냐 (0) | 2023.04.18 |
ANSI 표준 (0) | 2023.04.18 |
API 조회 성능 최적화 - 컬렉션(Fetch Join, distinct) (0) | 2023.04.18 |
댓글