본 포스팅은 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.
조인의 원리
- 중첩 루프 조인
- 정렬 병합 조인
- 해시 조인
중첩 루프 조인(NLJ, Nested Loop Join)
- 중첩 for문과 같은 원리로 조건에 맞는 조인을 하는 방법
- 랜덥 접근에 대한 비용이 많이 증가
- 따라서 대용량 테이블에 사용 X
정렬 병합 조인
- 각각의 테이블을 조인할 필드 기준으로 정렬하고 정렬이 끝난 후 조인 작업을 수행
- 조인할 때 쓸 적절한 인덱스가 없을 때 대용량 테이블 조인
- 조인 조건으로 < > 등 범위 비교 연산자 있을 때 사용
해시 조인
- 해시 테이블 기반으로 조인
- 하나의 테이블이 메모리에 온전히 들어간다면 중첩 루프 조인보다 더 효율적
- 동등 조인(=)에서만 사용가능
- 빌드 단계, 프로브 단계로 나뉨
빌드 단계
- 입력 테이블 중 하나를 기반으로 메모리 내 해시 테이블 빌드하는 단계
- 둘 중 바이트가 더 작은 테이블을 기반으로 해시 테이블 빌드
- 조인에 사용되는 필드가 해시 테이블의 키로 사용

프로브 단계
- 레코드 읽기 시작
- 각 레코드에서 person.country_id에 일치하는 레코드를 찾아서 결괏값 반

'CS 기본 > DB' 카테고리의 다른 글
조인의 종류 (0) | 2023.10.04 |
---|---|
인덱스 (1) | 2023.10.03 |
데이터베이스의 종류 (0) | 2023.10.01 |
트랜잭션과 무결성 (0) | 2023.10.01 |
ERD와 정규화 과정 (0) | 2023.09.28 |
본 포스팅은 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.
조인의 원리
- 중첩 루프 조인
- 정렬 병합 조인
- 해시 조인
중첩 루프 조인(NLJ, Nested Loop Join)
- 중첩 for문과 같은 원리로 조건에 맞는 조인을 하는 방법
- 랜덥 접근에 대한 비용이 많이 증가
- 따라서 대용량 테이블에 사용 X
정렬 병합 조인
- 각각의 테이블을 조인할 필드 기준으로 정렬하고 정렬이 끝난 후 조인 작업을 수행
- 조인할 때 쓸 적절한 인덱스가 없을 때 대용량 테이블 조인
- 조인 조건으로 < > 등 범위 비교 연산자 있을 때 사용
해시 조인
- 해시 테이블 기반으로 조인
- 하나의 테이블이 메모리에 온전히 들어간다면 중첩 루프 조인보다 더 효율적
- 동등 조인(=)에서만 사용가능
- 빌드 단계, 프로브 단계로 나뉨
빌드 단계
- 입력 테이블 중 하나를 기반으로 메모리 내 해시 테이블 빌드하는 단계
- 둘 중 바이트가 더 작은 테이블을 기반으로 해시 테이블 빌드
- 조인에 사용되는 필드가 해시 테이블의 키로 사용

프로브 단계
- 레코드 읽기 시작
- 각 레코드에서 person.country_id에 일치하는 레코드를 찾아서 결괏값 반

'CS 기본 > DB' 카테고리의 다른 글
조인의 종류 (0) | 2023.10.04 |
---|---|
인덱스 (1) | 2023.10.03 |
데이터베이스의 종류 (0) | 2023.10.01 |
트랜잭션과 무결성 (0) | 2023.10.01 |
ERD와 정규화 과정 (0) | 2023.09.28 |