반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 그룹함수
- 정렬
- 엔티티
- querydsl
- 컬렉션 조회 최적화
- 스프링
- @MappedSuperclass
- JPA
- 값 타입
- index
- 페이징
- 데이터베이스
- 친절한 SQL 튜닝
- Spring data JPA
- SQL
- 서브쿼리
- Spring
- INDEX SCAN
- 페치조인
- SQL 튜닝
- JPQL
- 오라클
- 스프링 데이터 JPA
- 성능최적화
- 스프링 컨테이너
- fetch join
- 데이터모델링
- TCP/IP
- 자바의 정석
- DTO
Archives
- Today
- Total
nu_s
[SQL] 튜닝 - NL 조인🔥 본문
728x90
반응형
NL 조인 (Nested Loop) - 중첩루프
NL 조인의 특징
- 가장 기본적인 조인이다.
- 인덱스를 사용한다. (소량에 유리)
- 한 레코드씩 순차적으로 읽는다.
기본 메커니즘
select e.사원명, c.고객명, c.전화번호
from 사원 e, 고객 c
where e.입사일자 >= '19960101'
and c.관리사원 번호 = e.사원번호
;
NL 조인 실행계획
Execution Plan
-------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS
1 0 NESTED LOOPS
2 1 TABLE ACCESS (BY INDEX ROWID) OF '사원' (TABLE)
3 2 INDEX (RANGE SCAN) OF '사원_X1' (INDEX)
4 3 TABLE ACCESS (BY INDEX ROWID) OF '고객' (TABLE)
5 4 INDEX (RANGE SCAN) OF '고객_X1' (INDEX)
NL 조인을 사용할 때는 use_nl 힌트를 사용한다.
select /*+ ordered use_nl(c) */
e.사원명, c.고객명, c.전화번호
from 사원 e, 고객 c
where e.입사일자 >= '19960101'
and c.관리사원번호 = e.사원번호
;
3개 이상의 테이블을 조인할 때
/* A -> B -> C -> D 순으로 조회 */
select /*+ ordered use_nl(B) use_nl(C) use_hash(D) */ *
from A, B, C, D
where ...
;
leading 힌트
/* leading 힌트를 사용하면 원본을 바꾸지 않고 순서를 제어할 수 있다. */
select /*+ leading(C, A, D, B) use_nl(A) use_nl(D) use_hasg(B) */ *
from A, B, C, D
where ...
;
NL조인은 소량 데이터를 주로 처리하거나 부분범위 처리가 가능한 온라인 트랜잭션 처리(OLTP)에 적합한 조인 방식이다.
* NL 조인 재구성
아래 코드에서 잘못된 곳은?
select *
from PRA_HST_STC a, ODM_TRMS b
where a.SALE_ORG_ID = :sale_ord_id
and a.STRD_GRP_ID = b.STRD_GRP_ID
and a.STRD_ID = b.STRD_ID
order by a.STC_DT desc
;
Inner 테이블 alias를 왼쪽에 기술하는 것이 중요
select *
from PRA_HST_STC a, ODM_TRMS b /* a가 outer 테이블, b가 inner 테이블 */
where a.SALE_ORD_ID = :sale_org_id
and b.STRD_GRP_ID = a.STRD_GRP_ID /* inner테이블 alias를 왼쪽에 기술!!! */
and b.STRD_ID = a.STRD_ID
order by a.STC_DT desc
;
728x90
반응형
'Data Base > DB Tunning' 카테고리의 다른 글
[SQL] 튜닝 - 해시 조인🔥 (0) | 2023.08.18 |
---|---|
[SQL] 튜닝 - 소트 머지 조인🔥 (0) | 2023.08.18 |
[SQL] 튜닝 - 인덱스 튜닝 🔥 (0) | 2023.08.17 |
[SQL] 튜닝 - 인덱스🔥 (1) | 2023.08.17 |
[SQL] 튜닝 - sql 처리 과정과 I/O🔥 (0) | 2023.08.17 |