간단명료

NL(Nested Loops) 조인 본문

SQL/업무에 바로 쓰는 SQL튜닝 입문

NL(Nested Loops) 조인

FeelGoood 2022. 3. 31. 21:24

1. NL조인의 튜닝 포인트

  • 테이블 간의 조인 횟수를 최소화하기 위한 조인 순서 최적화
  • Driven 테이블의 경우 연결고리 인덱스가 반드시 사용되어야 한다

2. NL조인의 장단점

- 장점

  • 인덱스를 통한 랜덤액세스기반에서 좋은 성능을 보임

- 단점

  • 인덱스가 없는 경우 속도 저하
  • 대용량데이터를 처리할 경우 성능 저하

3. 조인 순서 제어 방법

- 힌트사용

ORDERED 와 LEADING 을 같이 사용한 경우 LEADING은 무시된다.

  • ORDERED
    FROM 절에 기술한 테이블 순서대로 제어

    SELECT /*+ ORDERED USE_NL(a,b) */ A.id, B.name
    FROM table_a a, table_b b
    WHERE a.joinkey_a = b.joinkey_b
    AND a.color = 'RED'
    AND b.size = 'MED'

    a->b 순으로 NL조인 수행

  • LEADING
    힌트 내 제시한 테이블 순서대로 제어

    /*+ LEADING(테이블명) */

- 뷰활용

- SUPPRESSSING 활용

- FROM 절 테이블 순서 변경(단, CBO에서는 의미 없음)

4. 연결고리 컬럼에 대한 인덱스의 중요성

- 양쪽 모두 인덱스 존재

  • 조회 결과가 적은 테이블이 Driving 테이블로 선택

- 한쪽만 인덱스 존재

  • 인덱스가 존재하는 테이블을 Driven 테이블로 선택

- 양쪽 모두 인덱스 미존재

  • NL조인 불가

                                                             .
                                                             .
                                                             .
728x90
반응형

'SQL > 업무에 바로 쓰는 SQL튜닝 입문' 카테고리의 다른 글

서브쿼리  (0) 2022.03.28
인덱스 활용이 불가능한 경우  (0) 2022.03.26
결합인덱스  (0) 2022.03.26
인덱스  (0) 2022.03.26
옵티마이저  (0) 2022.03.26
Comments