728x90
MSSQL에서 지원하는 조인 방식은 아래와 같이 3가지가 존재한다.
이번 시간에는 그 중에서 "해시조인(HASH JOIN)"에 대해서 간단히 알아보도록 하자.
해시조인(HASH JOIN)
해시조인은 인덱스를 사용할 수 없는 환경에서 결과를 정렬할 필요가 없을 때 효율적으로 사용할 수 있는 조인방법이다.
만약 결과를 정렬할 필요가 있다면 머지조인이 더 효율적일 수 있다.
조인 후 결과가 아주 작아 메모리에서 정렬이 가능하면 해시 조인을 한 후에 정렬을 해도 문제가 되지 않는다.
빌드입력 테이블
- 조인 테이블 중에 통계를 기반으로 데이터가 작은 테이블을 빌드입력으로 선정함(해시 테이블 생성시 마다 메모리에 올리는 작업이 진행되기 때문에 비용감소목적)
- 빌드입력의 조인컬럼에 해시함수를 적용해서 해시키(인덱스 열할)를 생성 후 -> 해시 테이블에 저장
프로브입력 테이블
- 해시 테이블 생성이 완료되면 프로브 입력으로 선정된 테이블의 조인조건에 같은 방법으로 해시함수를 적용하여 해시키(인덱스 역할)를 생성
- 이후 해시 테이블에서 같은 해시키(인덱스 역할)를 찾아서 조인을 진행
주의사항
해시 테이블을 생성하는 중 메모리가 부족하면 유예해시조인으로 진행되며 추가로 디스크를 사용하게 되고 느린 디스크는 전체적인 성능 저하로 이어집니다.
조건자가 = 일 경우에만 사용이가능하다
반응형
그리드형
'IT > MSSQL' 카테고리의 다른 글
[MSSQL] 2019 신규 함수 Approx_Count_distinct (0) | 2023.01.28 |
---|---|
[MSSQL] 중첩루프, 머지, 해시조인 3가지 설명 (1) | 2023.01.28 |
[MSSQL] 머지 조인(SORT MERGE JOIN) 장/단점 설명 (0) | 2023.01.28 |
[MSSQL] 중첩 루프 조인(NESTED LOOP JOIN) 장/단점 설명 (0) | 2023.01.28 |
[MSSQL] CROSS APPLY, INNER JOIN 성능 비교 테스트 (0) | 2022.12.19 |
댓글