SQL의 JOIN 알고리즘과 특징

LeeYulhee·2023년 11월 28일
0

👉 JOIN 알고리즘 정의


  • 데이터를 결합하는 방법론이며, 각각 다른 상황에서 최적의 성능을 제공할 수 있음
  • 일반적인 JOIN 유형(예: INNER JOIN, LEFT JOIN 등)과는 다르게, 데이터베이스 쿼리 최적화기가 내부적으로 결정하는 실행 계획의 일부



👉 종류와 특징


  • SORT-MERGE JOIN
    • 두 데이터 세트를 먼저 정렬하고, 그 다음 정렬된 순서를 따라 행을 병합
    • 크기가 비슷하고 이미 잘 정렬된 테이블에 효과적
    • 인덱스가 없는 큰 테이블에서 효율적일 수 있음
  • NESTED-LOOPS JOIN
    • 외부 루프(첫 번째 테이블)와 내부 루프(두 번째 테이블)를 사용하여 행을 결합
    • 각 외부 루프 행에 대해, 내부 루프는 전체 또는 일부를 스캔하면서 일치하는 행을 찾음
    • 일반적으로 한 쪽 테이블이 작고 인덱스가 있는 경우에 효율적
  • HASH JOIN
    • 두 데이터 세트 중 하나를 사용하여 해시 테이블을 생성하고, 다른 하나를 사용하여 해시 테이블을 탐색
    • 큰 테이블 간의 JOIN이나 인덱스가 없는 테이블에서 효과적
    • 대량의 데이터를 빠르게 처리할 수 있지만, 메모리 사용량이 많을 수 있음
  • CLUSTER JOIN
    • 물리적으로 클러스터링된 테이블(예: 클러스터링 인덱스에 의해 정렬된 테이블)에 특화된 방법
    • 클러스터링된 테이블에서 데이터가 물리적으로 인접해 있기 때문에 JOIN 성능이 향상될 수 있음
    • 클러스터링된 인덱스가 있는 테이블 간의 JOIN에서 주로 사용



➕ 클러스터링된 테이블과 힙 테이블(비클러스터링)


  • 클러스터링된 테이블
    • 클러스터링된 테이블에서는 데이터가 특정 키(클러스터링 키)에 따라 물리적으로 정렬되어 저장
    • 이 키의 값에 따라 데이터가 디스크 상의 연속적인 공간에 저장되어, 특정 키 값을 기준으로 한 검색과 접근이 빠름
    • 많은 관계형 데이터베이스 시스템에서 클러스터링된 테이블은 특히 범위 쿼리나 조인 연산에 효과적
  • 힙 테이블(비클러스터링)
    • 비클러스터링된 테이블, 또는 힙 테이블에서는 데이터가 특정한 순서 없이 저장됨
      • 데이터가 물리적으로 정렬되어 있지 않음
    • 새로운 데이터는 테이블의 끝에 추가되거나, 빈 공간을 찾아 채워짐
    • 이러한 방식은 데이터 삽입이 빈번한 환경에서 유리할 수 있지만, 특정 데이터를 찾기 위해서는 전체 테이블을 스캔하거나 별도의 인덱스를 사용해야 함
  • ⇒ 기본적으로 생성되는 테이블이 클러스터링된 테이블인지 아닌지는 사용하는 DBMS와 해당 DBMS의 기본 설정에 따라 달라짐
    • 원한다면 명시해서 생성할 수 있음
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보