[ 데이터베이스 ] JOIN OPERATION

조인 연산
2개의 테이블을 1개 집합으로 만드는 연산
SQL 명령문에 의해, 여러 테이블에 저장된 DATA를 한번에 조회 (대표적인 데이터 연결 방법)
1) NESTED-LOOP JOIN

- 하나의 집합을 기준으로, 순차적으로 연결 테이블의 ROW를 결합
- RANDOM ACCESS (좁은 범위에 유리) -> 넓은 범위에 처리시 부하 가능성 있음
- 후행 TABLE에 조인을 위한 인덱스 필요
- 중첩된 반복문과 유사한 방식으로 조인 수행
- 유니크 인덱스로 소량 데이터를 온라인 조회, OLTL 목록처리에 사용
2) SORT- MERGE JOIN

- 양쪽 TABLE의 처리범위를 각자 ACCESS -> 선행집합의 개념이 없다
- 정렬 결과를 차례로 SCAN하여 연결조건으로 MERGE 한다.
- 마땅한 인덱스가 없을 때 / 조인의 범위 넓을 때 사용
- DW등 데이터 집계방식에 사용된다
3) HASH JOIN

- SORT-MERGE 대신 (부하) 해시값을 이용해 TABLE 조인
- 대용량 처리에 BEST
- HASH TABLE 생성 후, 순차적 처리 형태
- EQUI JOIN 연산자가 '=' 일때만 사용 가능
- 두개 TABLE 중 더 작은 TABLE을 HASH 메모리에 로딩 -> 조인키로 테이블생성
- 해싱함수는 직접적으로 연결하지 않고, 대상을 특정 지역에 모아둔다.
- DW등 데이터를 집계한다
- CPU 연산이 증가함
조인 기법
1) NL JOIN 기법
조인 결과를 빠르게 화면에 보여줄 경우

반복문의 외부 테이블(OUTER TABLE) = 선행 테이블
반복문의 내부 테이블(INNER TABLE) = 후행 테이블
추출버퍼 : SQL문의 실행 결과를 보관하는 버퍼
- 조인칼럼에 적당한 인덱스 O -> 자연 조인이 효율적일 때 유용
- DRIVING TABLE의 조인 데이터 양이 큰 영향 O
-> 결과 행 수 적은 테이블을 선행 TABLE로 잡기
2) SORT MERGE JOIN 기법

조인칼럼 기준, 데이터 정렬
- 넓은 범위 데이터 처리시
- 비동등 조인 가능
- 조인 칼럼에 적당한 인덱스 X -> NL이 비효율적일 때 사용
- DRIVING TABLE 개념은 중요하지 않다
3) HASH JOIN 기법

조인 수행 테이블의 조인 칼럼에 해슁
-> 동일한 해쉬 값을 갖는 것 사이에서 조인 수행
- 조인 칼럼의 인덱스 사용 X -> 인덱스 없이도 조인 가능
- 동등 조인 ('=')에서만 사용 가능 EQUI JOIN
- 선행 TABLE : 결과 행의 수가 적은 TABLE로 사용
- SORT MERGE JOIN 하기에 두 테이블이 너무 커서 SORT 부하가 심할 때
- 조인 칼럼에 적당한 인덱스 X -> 자연 조인이 비효율적일 때
'Back-End > SQL 개발자 자격증' 카테고리의 다른 글
[자격증] SQLD SQL 개발자 자격증 3주 만에 획득 (1) | 2024.02.25 |
---|---|
[ 데이터베이스 ] PL/SQL, T-SQL, Trigger (1) | 2023.11.12 |
[ 데이터베이스 ] Built in Function (0) | 2023.11.12 |
[ 데이터베이스 ] Foreign key specification options (1) | 2023.11.06 |
[ 데이터베이스 ] Entity Classification and Characteristics (1) | 2023.11.02 |