콘텐츠로 이동

테이블 조인

테이블 조인

조인

  • 종류
    • 내부 조인 : 왼쪽 - 오른쪽 두 행이 모두 일치하는 행일 경우에만
    • 왼쪽 조인 : 왼쪽 테이블의 모든 행이 결과 테이블에 표기
    • 오른쪽 조인 : 오른쪽 테이블의 모든 행이 결과 테이블에 표기
    • 합집한 조인 : 두개의 테이블을 기반으로 조인 조건에 만족하지 안흔ㄴ 행까지 모두 표기

조인 원리

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