반응형
Nested Loop 조인
- 하나의 테이블에서 데이터를 먼저 찾고 그다음 테이블을 조인하는 방식으로 실행된다.
- 먼저 조회되는 테이블을 외부 테이블(Outer Table)이라고 하고 그다음 조회되는 테이블을 내부 테이블(Inner Table)이라고 한다.
- 외부 테이블(선행 테이블)의 크기가 작은 것을 먼저 찾는 것이 중요하다. 그래야 데이터가 스캔되는 범위를 줄일 수 있기 때문이다.
- RANDOM ACCESS가 발생하는데 RANDOM ACCESS가 많이 발생하면 성능 지연이 발생한다. 그러므로 Nested Loop 조인은 RANDOM ACCESS의 양을 줄여야 성능이 향상된다.
Sort Merge 조인
- 두 개의 테이블을 SORT_AREA라는 메모리 공간에 모두 로딩(Loading)하고 SORT를 수행한다.
- 두 개의 테이블에 대해서 SORT가 완료되면 두 개의 테이블을 병합(Merge)한다.
- 정렬(SORT)이 발생하기 때문에 데이터양이 많아지면 성능이 떨어지게 된다.
- 정렬 데이터양이 너무 많으면 정렬은 임시 영역에서 수행된다. 임시영역은 디스크에 있기 때문에 성능이 급격히 떨어진다.
Hash 조인
- 두 개의 테이블 중에서 작은 테이블을 HASH 메모리에 로딩하고 두 개의 테이블의 조인 키를 사용해서 해시 테이블을 생성한다.
- 해시 함수를 사용해서 주소를 계산하고 해당 주소를 사용해서 테이블을 조인하기 때문에 CPU 연산을 많이 한다.
- 특히 Hash 조인 시에는 선행 테이블이 충분히 메모리에 로딩되는 크기여야 한다.
반응형
'Certificate > SQLD' 카테고리의 다른 글
[SQLD] SQLD 47회 시험 합격 후기 (공부 기간, 방법 및 후기 ) (0) | 2022.11.26 |
---|---|
[SQLD]인덱스(Index) (0) | 2021.11.17 |
[SQLD]옵티마이저 종류 (0) | 2021.11.16 |
[SQLD]옵티마이저(Optimizer)와 실행 계획 (0) | 2021.11.15 |
[SQLD]SQL(Structured Query Language) 종류 (0) | 2021.11.13 |