✔ 조인 수행 원리
Nested Loop Join (NL Join)
- 조인 칼럼에 적당한 인덱스가 있어서 자연조인이 효율적일 때 유용
- 선행 테이블의 조건을 만족하는 모든 행의 수만큼 반복 수행하므로
결과 행의 수가 적은 테이블을 조인 순서상 선행 테이블로 선택하는 것이 전체 일량을 줄일 수 있음 - Driving Table의 조인 데이터 양이 큰 영향을 줌
- 유니크 인덱스를 활용하여 수행 시간이 적게 걸리는 소량 테이블을 빨리 화면에 보여줘야 하는 온라인 조회하는 경우 유용
- 주로 랜덤 액세스 방식으로 데이터를 읽음
Sort Merge Join
- 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행
- 조인 칼럼에 적당한 인덱스가 없어서 NL 조인이 비효율적일 때 사용
- Driving Table의 개념이 중요하지 않음
- 조인 조건의 인덱스의 유무에 영향을 받지 않음
- 주로 스캔 방식으로 데이터를 읽음
- 랜덤 액세스로 부담이 되는 넓은 범위의 데이터를 처리할 때 이용
- 정렬할 데이터가 많아 메모리에서 모든 정렬 작업을 수행하기 어려운 경우에는
임시 영역인 디스크를 사용하기 때문에 성능이 떨어질 수 있음 - 비동등 조인에 대해서도 조인 작업이 가능
Hash Join
- 조인 칼럼의 인덱스를 사용하지 않기 때문에 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있음
- 해쉬 함수를 이용하여 조인을 수행
- Sort Merge Join을 수행하기에 두 테이블이 너무 커서 소트 부하가 심할 때 유용
- 한쪽 테이블이 주 메모리의 가용 메모리에 담길 정도로 충분히 작고 해시 키 속성에 중복 값이 적을 때 효과적
- 행의 수가 작은 테이블을 선형 테이블로 선택하는 것이 유리
- 해시 함수를 이용하여 조인을 수행하므로 EQUI(=) 조인 조건에서만 동작하므로 동등 조건에서만 사용할 수 있음
- 일반적으로 Sort Merge Join보다 더 우수한 성능을 보이지만,
Join 대상 테이블이 Join Key 칼럼으로 정렬되어 있을 때는 우수하지 않을 수 있음
'Certificate > SQL개발자' 카테고리의 다른 글
[SQL개발자] 목차 (0) | 2023.10.26 |
---|---|
[SQL개발자] SQL 최적화 기본 원리 - 인덱스 기본 (0) | 2023.10.20 |
[SQL개발자] SQL 최적화 기본 원리 - 옵티마이저와 실행계획 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 절차형 SQL (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 윈도우 함수 (0) | 2023.10.20 |
✔ 조인 수행 원리
Nested Loop Join (NL Join)
- 조인 칼럼에 적당한 인덱스가 있어서 자연조인이 효율적일 때 유용
- 선행 테이블의 조건을 만족하는 모든 행의 수만큼 반복 수행하므로
결과 행의 수가 적은 테이블을 조인 순서상 선행 테이블로 선택하는 것이 전체 일량을 줄일 수 있음 - Driving Table의 조인 데이터 양이 큰 영향을 줌
- 유니크 인덱스를 활용하여 수행 시간이 적게 걸리는 소량 테이블을 빨리 화면에 보여줘야 하는 온라인 조회하는 경우 유용
- 주로 랜덤 액세스 방식으로 데이터를 읽음
Sort Merge Join
- 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행
- 조인 칼럼에 적당한 인덱스가 없어서 NL 조인이 비효율적일 때 사용
- Driving Table의 개념이 중요하지 않음
- 조인 조건의 인덱스의 유무에 영향을 받지 않음
- 주로 스캔 방식으로 데이터를 읽음
- 랜덤 액세스로 부담이 되는 넓은 범위의 데이터를 처리할 때 이용
- 정렬할 데이터가 많아 메모리에서 모든 정렬 작업을 수행하기 어려운 경우에는
임시 영역인 디스크를 사용하기 때문에 성능이 떨어질 수 있음 - 비동등 조인에 대해서도 조인 작업이 가능
Hash Join
- 조인 칼럼의 인덱스를 사용하지 않기 때문에 조인 칼럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있음
- 해쉬 함수를 이용하여 조인을 수행
- Sort Merge Join을 수행하기에 두 테이블이 너무 커서 소트 부하가 심할 때 유용
- 한쪽 테이블이 주 메모리의 가용 메모리에 담길 정도로 충분히 작고 해시 키 속성에 중복 값이 적을 때 효과적
- 행의 수가 작은 테이블을 선형 테이블로 선택하는 것이 유리
- 해시 함수를 이용하여 조인을 수행하므로 EQUI(=) 조인 조건에서만 동작하므로 동등 조건에서만 사용할 수 있음
- 일반적으로 Sort Merge Join보다 더 우수한 성능을 보이지만,
Join 대상 테이블이 Join Key 칼럼으로 정렬되어 있을 때는 우수하지 않을 수 있음
'Certificate > SQL개발자' 카테고리의 다른 글
[SQL개발자] 목차 (0) | 2023.10.26 |
---|---|
[SQL개발자] SQL 최적화 기본 원리 - 인덱스 기본 (0) | 2023.10.20 |
[SQL개발자] SQL 최적화 기본 원리 - 옵티마이저와 실행계획 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 절차형 SQL (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 윈도우 함수 (0) | 2023.10.20 |