← 질문 목록
#371깊이 0

SQL에서 세미 조인은 어떤 문제를 해결하는가?

데이터베이스

1:N 관계 조인에서 발생하는 메인 테이블의 중복 출력과 불필요한 연산 문제를 해결한다. 서브쿼리에 조건이 일치하는 행이 존재하는지만 확인할 때 쓰인다.

관점일반 조인세미 조인
중복 발생N개만큼 메인 행 중복메인 행 중복 없음
탐색 방식일치하는 모든 행을 찾음일치하는 첫 행에서 중단
연산 비용DISTINCT 정렬 필요중복 제거 연산 없음

옵티마이저IN이나 EXISTS 서브쿼리를 만났각 때 세미 조인으로 변환한다. 조건에 맞는 행을 서브쿼리에서 하나라도 찾으면 즉시 검색을 멈춘다. 이를 숏서킷 평가라 부른다.

서브쿼리를 일반 조인으로 바꾸면 중복을 없애려고 DISTINCT를 써야 한다. DISTINCT는 정렬과 임시 테이블을 요구하므로 부하가 크다. 세미 조인을 쓰면 이런 정렬 과정 없이 메모리를 아낀다.

서브쿼리 쪽 테이블의 크기나 인덱스에 따라 해시 세미 조인을 고른다. 대용량 데이터 처리 시 성능 향상 폭이 커진다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

SQL에서 세미 조인은 어떤 문제를 해결하는가?