반응형
1. NLJ(NESTED LOOPS JOIN) 중첩 루프 조인
- 중첩 for문의 원리로 조인을 하는 방법
- 선행테이블(외부테이블, Driving Table, Outer Table)을 선 조회하여 연결 대상 데이터를 찾고, 그 다음 테이블(내부 테이블, Driven Table, Inner Table)을 연결
- 선행 테이블의 처리범위에 따라 처리량이 결정됨(선행테이블의 크기가 작은것을 찾아야 함)
- row간의 처리, table간의 처리가 모두 순차적으로 일어남
- 최적의 순서를 찾아주는 것이 중요
- RANDOM ACCESS 발생(Driving에서 Driven을 참조할 때 발생)
- 성능지연을 줄이기위해 RANDOM ACCESS가 적은양이 발생하도록 해야함
- 선행테이블 범위가많거나 연결테이블에서 랜덤액세스가 많아지면 SORT MERGE JOIN보다 불리
- INDEX가 필요함, Unique Index시 유리함
- 온라인 트랜잭션 처리(OLTP)에 유용 💡
2. SORT MERGE JOIN
- 두 테이블을 각각 정렬하고 완료되면 병합(SORT)
- 정렬이 발생하기 때문에 데이터양이 많은 경우에는 느려지고 성능 저하
- 정렬 대상이 많을경우 임시디스크를 사용해서 성능이 저하됨
- EQIU JOIN, NON-EQUI JOIN 모두 가능 💡
3. HASH JOIN
- 두 테이블 중 작은테이블을 HASH메모리에 로딩하고, 두 테이블의 조인 키를 사용해 테이블 생성 💡
- 두 테이블을 동시 스캔
- 선행 테이블에는 작은데이터가 먼저(선행테이블이 충분히 메모리에 로딩되어야 함)
- 시스템자원을 최대한 활용가능하며, 또는 너무 많이 사용될 우려도 있음 💡
- 대용량처리에 빠른 처리속도
- EQUI JOIN에서만 가능
- INDEX를 사용하지 않음
- 해시함수를 사용해 주소를계산하고, 해당주소로 테이블을 조인하기 때문에 CPU연산을 많이 한다
728x90
반응형
'license > SQLD 데이터개발자' 카테고리의 다른 글
SQLD 핵심 정리 :: 시험 전에 보는 핵심노트📕 (3) | 2024.11.16 |
---|---|
SQL NULL 관련 함수 :: 헷갈리는 null 함수들 (1) | 2024.11.15 |
SQL 날짜형 함수/연산 모음 :: Oracle / MS-SQL (0) | 2024.11.10 |
SQL 숫자형 함수 모음 :: Oracle / MS-SQL (1) | 2024.11.10 |
관계형 데이터베이스 (0) | 2024.11.03 |