드라이빙 테이블: Difference between revisions
From IT Wiki
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
'''관계형 데이터베이스에서 NESTED LOOPS | '''관계형 데이터베이스에서 NESTED LOOPS 조인 수행 시 옵티마이저가 조인의 기준으로 지정하는 테이블''' | ||
* 드라이밍 테이블이 아닌 테이블은 드리븐 테이블(Driven Table)로 지정 | * 드라이밍 테이블이 아닌 테이블은 드리븐 테이블(Driven Table)로 지정 | ||
Line 6: | Line 6: | ||
옵티마이저의 선택이 최적이 아닌 경우, 테이블 간 조인 횟수를 최소화 할 수 있는 드라이빙 테이블을 직접 지정하여 조인 순서 제어 | 옵티마이저의 선택이 최적이 아닌 경우, 테이블 간 조인 횟수를 최소화 할 수 있는 드라이빙 테이블을 직접 지정하여 조인 순서 제어 | ||
* 힌트 사용 | * 힌트 사용 | ||
** /*+ LEADING(테이블A) */ -- | ** /*+ LEADING(테이블A) */ -- 드라이빙 테이블 지정 | ||
** /*+ ORDERED USE_NL(테이블A, 테이블B) */ -- 여러 테이블 간 순서 제어 | ** /*+ ORDERED USE_NL(테이블A, 테이블B) */ -- 여러 테이블 간 순서 제어 | ||
** 두 힌트 같이 사용 시 LEADING이 무시됨 | ** 두 힌트 같이 사용 시 LEADING이 무시됨 | ||
* View 사용 | |||
** View를 만들어가며 작업할 경우 조인 순서 조정 가능 | |||
* 서프레싱(Suppressiong) 활용 | |||
* RBO인 경우 FROM의 테이블 순서 변경 | |||
== 선정 고려사항 == | == 자동 선정 기준 == | ||
* 양쪽 모두 인덱스가 있는 경우 | |||
** 두 테이블 중 조회 결과가 적은 테이블을 드라이빙 테이블로 선정 | |||
* 한쪽만 인덱스가 있는 경우 | |||
** 인덱스가 없는 테이블을 드라이빙 테이블로 선정 | |||
* 양쪽 모두 인덱스가 없는 경우 | |||
** Nested Loops 조인이 이루어지지 않음 | |||
== 수동 선정 시 고려사항 == | |||
* 데이터가 적은 마스터테이블이거나 WHERE절 조건으로 적절하게 row를 제어할 수 있어야 함 | * 데이터가 적은 마스터테이블이거나 WHERE절 조건으로 적절하게 row를 제어할 수 있어야 함 | ||
* | * 드리븐 테이블에서는 조인을 위한 적절한 인덱스가 생성되어 있어야 함 | ||
== 같이 보기 == | == 같이 보기 == |
Latest revision as of 13:09, 29 August 2021
관계형 데이터베이스에서 NESTED LOOPS 조인 수행 시 옵티마이저가 조인의 기준으로 지정하는 테이블
- 드라이밍 테이블이 아닌 테이블은 드리븐 테이블(Driven Table)로 지정
튜닝 포인트[edit | edit source]
옵티마이저의 선택이 최적이 아닌 경우, 테이블 간 조인 횟수를 최소화 할 수 있는 드라이빙 테이블을 직접 지정하여 조인 순서 제어
- 힌트 사용
- /*+ LEADING(테이블A) */ -- 드라이빙 테이블 지정
- /*+ ORDERED USE_NL(테이블A, 테이블B) */ -- 여러 테이블 간 순서 제어
- 두 힌트 같이 사용 시 LEADING이 무시됨
- View 사용
- View를 만들어가며 작업할 경우 조인 순서 조정 가능
- 서프레싱(Suppressiong) 활용
- RBO인 경우 FROM의 테이블 순서 변경
자동 선정 기준[edit | edit source]
- 양쪽 모두 인덱스가 있는 경우
- 두 테이블 중 조회 결과가 적은 테이블을 드라이빙 테이블로 선정
- 한쪽만 인덱스가 있는 경우
- 인덱스가 없는 테이블을 드라이빙 테이블로 선정
- 양쪽 모두 인덱스가 없는 경우
- Nested Loops 조인이 이루어지지 않음
수동 선정 시 고려사항[edit | edit source]
- 데이터가 적은 마스터테이블이거나 WHERE절 조건으로 적절하게 row를 제어할 수 있어야 함
- 드리븐 테이블에서는 조인을 위한 적절한 인덱스가 생성되어 있어야 함