Back-End/SQL 개발자 자격증

[ 데이터베이스 ] JOIN OPERATION

psy_er 2023. 11. 13. 20:22
728x90

[ 데이터베이스 ] 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 -> 자연 조인이 비효율적일 때

 

 

728x90