4. NL 조인[조인 튜닝]
2022. 9. 19. 00:53ㆍ개발 관련 책 읽기/친절한 SQL 튜닝
조인 튜닝에 들어가기 앞서, 내가 생각했을때 튜닝의 꽃은 조인튜닝이라고 생각한다. 인덱스 튜닝도 중요하고 다른것들도 중요한데 왜 조인튜닝이 중요하다고 생각했냐면.. 실제 업무에서 쿼리짤때 조인이 안들어가는 경우가 드물다.(조인없는 쿼리가 과연 있을까?? ㅋㅋ)
그래서 조인튜닝은 잘배우면 실무에서 바로 써먹을수 있는 좋은 기회 라고 생각한다. 😲😲
그러면 조인 튜닝에 대해서 들어가보자~
오라클의 대표적인 조인 알고리즘에는 3가지가 있다. (NL조인, Sort_Merge조인, Hash조인 )
그중에서 먼저 NL조인에 대하여 알아보자. NL조인의 작동방식은 말그대로 NESTED LOOPS 중첩 루프 방식이다.
C, JAVA등 언어에서 다중 반복문이라고 생각하면 쉽다!
[NL 조인 작동방식]
C,JAVA
|
PL/SQL
|
for(i=0; i<100; i++){ -- outer loop for(j=0; j<100; j++){ -- inner loop ..... } }
|
for outer in 1..100 loop for inner in 1..100 loop dbms_output.put_line(outer || ':' || inner); end loop; end loop;
|
아래의 PL/SQL과 SQL문은 내부적으로(Recursive하게) 쿼리를 반복 수행하지 않는점 이외에 동일한 처리를 한다.
PL/SQL
|
SQL
|
begin for outer in (select deptno, empno, rpad(ename, 10) ename from emp) loop -- outer 루프 for inner in (select dname from dept where deptno = outer.deptno) loop -- inner 루프 dbms_output.put_line(outer.empno||' : '||outer.ename||' : '||inner.dname); end loop; end loop; end;
|
select /*+ ordered use_nl(d) */ e.empno, e.ename, d.dname from emp e, dept d where d.deptno = e.deptno
|
반응형
'개발 관련 책 읽기 > 친절한 SQL 튜닝' 카테고리의 다른 글
3. 부분 범위 처리[인덱스 튜닝] (0) | 2022.09.19 |
---|---|
2. 인덱스 클러스터링 팩터[인덱스 튜닝] (0) | 2022.09.19 |
1. 인덱스 ROW ID 분석 및 테이블 엑세스 구조 파악 (0) | 2022.05.13 |