테이블 조인
테이블 조인
조인
- 종류
- 내부 조인 : 왼쪽 - 오른쪽 두 행이 모두 일치하는 행일 경우에만
- 왼쪽 조인 : 왼쪽 테이블의 모든 행이 결과 테이블에 표기
- 오른쪽 조인 : 오른쪽 테이블의 모든 행이 결과 테이블에 표기
- 합집한 조인 : 두개의 테이블을 기반으로 조인 조건에 만족하지 안흔ㄴ 행까지 모두 표기
조인 원리
- 중첩 루프 조인
- 테이블 두 개 합칠 때 이중 for문 돌아서 조건에 맞는 레코드 찾아 결과 반환
- 정렬 병합 조인
- 각각의 테이블을 조인할 필드 기준으로 정렬
- 정렬이 끝난 이후에 조인 작업 수행
- 해시 조인
- 해시 테이블 기반의 조인 방법
- 두 개 테이블 조인시 하나의 테이블이 메모리에 온전히 들어간다면 효율적
- MySQL 8.0.18 버전부터 지원
- 예시 (JOIN ON persons.country_id = countries.id)
- 빌드 단계
- 입력 테이블 중 하나를 기반으로 메모리 내 해시 테이블 빌드
- 둘 중에 바이트가 더 작은 테이블 기반으로 해서 테이블 빌드
- 조인에 사용되는 필드가 해시 테이블의 "키"
- 프로브 단계
- 레코드 읽기를 시작
- 각 레코드에서 persons.country_id에 일치하는 레코드를 찾아 결과값 반환