728x90
MSSQL에서 지원하는 조인 방식은 아래와 같이 3가지가 존재한다.
이번 시간에는 그 중에서 "중첩루프조인(NESTED LOOP JOIN)"에 대해서 간단히 알아보도록 하자.
중첩루프조인(NESTED LOOP JOIN)
- 순차적으로 처리된다.
- 작은 입력을 인덱스를 사용하여 조인할 때 가장 효율적 성능을 보인다.(OLTP 환경에 적합)
- 정렬이나 해시 테이블 생성과 같은 대기(STOP&GO)를 해야하는 추가적인 선행 작업이 필요 없기 때문에 추가 메모리를 사용하지 않는다. 따라서 메모리 사용량이 가장 적다
- 메모리를 사용하지 않는 점은 많은 동시 사용자를 처리하는 OLTP 환경에서 큰 장점으로 작용한다.
외부참조 테이블
- 통계를 기반으로 데이터가 작은 테이블을 외부테이블로 선택
- 조인횟수는 외부참조 테이블에 의해 결정되기 때문에 WHERE 조건으로 테이블 크기를 줄여야한다. 따라서 인덱스는 WHERE 조건을 기준으로 생성
내부참조 테이블
- 조인조건의 컬럼(ON) 기준으로 인덱스 생성 필요(내부참조 테이블에 인덱스가 없는 경우 외부 참조테이블에서 조인할 때마다 풀스캔이 발생하여 성능이 저하된다)
주의사항
- 인덱스가 테이블 선택의 영향을 주기 때문에 중첩루프 조인을 사용한다면 내측 테이블로 사용할 테이블에는 반드시 적당한 인덱스를 만들어야 원하는 실행 계획을 만들 수 있다
- 외부입력이 작고 내부 입력이 크면 더 효과적
반응형
그리드형
'IT > MSSQL' 카테고리의 다른 글
[MSSQL] 해시조인(HASH JOIN) 장/단점 설명 (0) | 2023.01.28 |
---|---|
[MSSQL] 머지 조인(SORT MERGE JOIN) 장/단점 설명 (0) | 2023.01.28 |
[MSSQL] CROSS APPLY, INNER JOIN 성능 비교 테스트 (0) | 2022.12.19 |
[MSSQL] MSDB 파일 사이즈 증가로 인한 백업 히스토리 기록 삭제방법(복원,백업 로딩속도 개선) (0) | 2022.12.19 |
[MSSQL] 윈도우 호스트네임 변경 후 SQL 윈도우인증 접속 불가 (0) | 2022.11.15 |
댓글