SQL JOIN : 성능에 영향을 주는 요소들

LeeYulhee·2023년 11월 28일
0

👉 JOIN문 성능에 영향을 주는 요소들


  • 인덱스 사용
    • 인덱스는 JOIN 연산의 속도를 크게 향상시킬 수 있음
    • JOIN에 사용되는 컬럼에 인덱스가 있으면, 데이터베이스는 더 빠르게 필요한 행을 찾을 수 있음
      • ➕ 어디에 인덱스가 설정되어 있어야 하는지?
        • JOIN 조건에 사용되는 컬럼
          • JOIN 되는 모든 테이블들에 인덱스를 설정하는 것이 좋으나 항상 가능하거나 필요한 것은 아님
        • WHERE 절에 사용되는 컬럼
        • ORDER BY 및 GROUP BY 절의 컬럼

  • 테이블의 크기와 행 수
    • JOIN에 참여하는 테이블의 크기와 행의 수가 많을수록 JOIN 연산에 더 많은 시간이 소요

  • JOIN 조건의 중요성
    • 복잡하거나 비효율적인 JOIN 조건은 성능을 저하시킬 수 있음
    • 간단하고 명확한 조건을 사용하는 것이 좋음

  • 데이터 분포와 선택도의 역할
    • 데이터의 분포와 JOIN 컬럼의 선택도(유니크한 값의 비율)도 성능에 영향을 줌
    • 높은 선택도를 가진 컬럼을 JOIN 조건으로 사용하면 더 효율적일 수 있음
      • ➕ 선택도란?
        • 특정 조건에 의해 필터링 되는 데이터의 비율을 의미
        • 어떤 컬럼에 대한 쿼리 조건이 전체 행 중 소수의 행만을 반환한다면, 이 조건은 높은 선택도를 가진 것 ⇒ 일반적으로 인덱스의 효율성을 높임
        • 반대로, 많은 수의 행을 반환하는 조건은 낮은 선택도를 가짐

  • 쿼리 최적화기의 역할
    • 데이터베이스의 쿼리 최적화기는 실행 계획을 결정하며, 이는 JOIN의 성능에 큰 영향을 줌
    • 최적화기는 통계 정보를 바탕으로 최적의 JOIN 방법을 선택

  • JOIN 유형
    • INNER JOIN, LEFT JOIN, RIGHT JOIN 등 JOIN의 유형도 성능에 영향을 줌

  • 서브쿼리와 임시 테이블의 사용
    • JOIN에 서브쿼리나 임시 테이블이 포함되어 있으면, 이들의 처리 시간이 전체 성능에 영향을 줌

  • 선행 테이블
    • 일반적으로 더 적은 수의 행을 가진 테이블이나, 더 효율적인 인덱스 접근을 제공하는 테이블을 선행 테이블로 선택하는 것이 좋음
    • 적절한 인덱스가 있는 테이블을 선행 테이블로 사용하면, JOIN 연산의 성능을 크게 향상시킬 수 있음
    • 쿼리 작성자가 직접 선행 테이블을 지정하는 것은 일반적이지 않으며, 대부분의 경우 최적화기의 결정을 따름
profile
끝없이 성장하고자 하는 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보