개발머해니

[DB] Oracle Join 중에서 가장 성능이 좋은 쿼리는? 본문

백엔드

[DB] Oracle Join 중에서 가장 성능이 좋은 쿼리는?

왕행님 2023. 9. 1. 12:45
728x90
반응형

* 현재글은 임시로 궁금한 내용만 급하게 작성해놔서 추후 수정 예정입니다…



Nested Loops Join


* 다른 필터 조건이 없는 상황에서는 작은 쪽(=1쪽) 집합을 드라이빙하는 것이 유리

* JOIN 조건 외에 필터 조건이 있을 때는 인덱스 구성에 따라 유·불리가 결정

인덱스 구성이 잘 된 경우 작은 쪽(=1쪽) 집합을 드라이빙하는 것이 유리



Nested Loops Join 의 원리와 성능 최적화의 조건
= "구동테이블이 작고, 내부테이블에 인덱스가 존재한다."

[SQL] 성능 관점에서 보는 결합(Join)

0. 들어가며 결합(Join) 은 SQL 사용하게 되면 반드시 활용하는 기능입니다. Inner Join, Outer Join 등 다양한 결합 방법이 존재하고 우리는 이를 활용해서 DB에 있는 여러 테이블을 활용할 수 있습니다.

schatz37.tistory.com


Sort Merge JOIN


- PGA상에 정렬된 집합을 통해 JOIN access가 일어나기 때문에 Random access 발생량보다는 Sort 부하에 의해 성능이 결정

- 디스크 소트(to-disk sort)가 발생할 정도의 큰 테이블을 포함할 때는 큰 테이블을 드라이빙하는 것이 유리

- 메모리 소트(in-memory sort) 방식으로 JOIN할 때는 작은 쪽 테이블을 드라이빙 하는 것이 유리



Hash JOIN


- Hash Area에 Build Input을 모두 채울 수 있느냐가 관건이므로 무조건 작은 쪽 테이블을 드라이빙하는 것이 유리


[Oracle] 오라클 JOIN 순서의 중요성

NL JOIN- Random access 발생량에 의해 성능이 좌우 -- 고객의 총 수는 10만 명, 납입 방법은 세가지-- 두 테이블 모두 JOIN 컬럼에 인덱스를 갖고 있다고 가정 - 필터 조건이 없는 경우SELECT /*+ use_nl (a b) */

jungmina.com

728x90
반응형