Data

[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제4장 조인 튜닝

제4장 조인 튜닝
제1절 NL 조인
제2절 소트 머지 조인
제3절 해시 조인
제4절 스칼라 서브쿼리
제5절 고급 조인 기법

조인튜닝    
  1. NL 조인 
Nested Loop Join
개념 중첩 루프 방식으로 조인
1. 외부 테이블의 각 행을 하나씩 읽습니다. 
2. 내부 테이블에 조건에 맞는행을 찾기위해 스캔. 
  장점 간단, 구현이 쉬움, 작은 테이블간의 조인에 적합
  단점 큰 테이블에서 성능이 저하됨 
O(n*m) 복잡도, 여기서 n은 외부 테이블의 행수, m은 내부테이블의 행수
  성능향상 1. 인덱스 활용
2. 작은 테이블과 큰테이블간 조인에 사용. 
  2. 소트머지조인
Sort-Merge Join
개념 두테이블 정렬한 후 정렬된 데이터를 병합 조인. 
1. 조인 조건에 따라 정렬 
2. 정렬된 데이터를 순차적으로 병합 조인 
  장점  대량데이터 조인시 효율적
정렬된 데이터 순차적으로 처리 , 성능조음
  단점 정렬작업이 필요하므로 시간과 자원소모
정렬된 상태로 유지하기위한 추가공간
  성능향상 1. 인덱스 
2. 메모리관리, 임시 디스크공간 적절히 활용. 
  3. 해시조인
Hash Join 
개념 하나의 테이블을 해시 테이블로 변환, 각 행을 해시테이블에서 검색
1. 작은 해시테이블 
2. 큰테이블의 행을 해시테이블에서 조인
  장점  인덱스가 없어도 효율
대량의 데이터에 대해 좋은 성능
  단점 메모리 사용량 많음
해시 테이블생성하는데 시간소요. 
  성능향상  1. 충분한 메모리 할당
2. 부분해시조인 - 대용량처리시 분할 해시테이블 사용. 
  4. 스칼라 서브쿼리
Scalar Subquery
개념 서브쿼리가 단일값을 반환하는경우 
  장점 가독성, 특정조건 값 쉽게 얻음
  단점 서브쿼리가 반복적으로 실행, 성능저하복잡한 쿼리 성능문제 
  성능향상 1. 서브쿼리를 조인으로 변경하여 성능개선
2. 인덱스 활용 : 인덱스 추가. 
  5. 고급 조인기법
Advanced Join Techniques
1. 배치조인
Batch Join 
대량의 데이터를 배치 단위로 처리하여 조인, 일정량씩 나눠처리함
  2. 병렬조인
Parallel Join 
여러스레드, 프로세스에 동시에 수행, 성능향상, 대규모처리시
  3. 클러스터링조인
Clustered Join 
데이터가 물리적으로 정렬되어 있을때 인접 데이터 블록이용 조인
  4. 인덱스조인
Index Join 
인덱스 이용 조인조건 데이터 빠르게 찾기. 
인덱스 최적화 있을때 성능향상.
  5. 비트맥 인데스  조인
Bitmap Index Join 
비트맵 인덱스 사용, 조인 조건에 맞는 데이터 효율적으로 찾음. 
값의 종류가 적은 컬럼 효과적.