* 현재글은 임시로 궁금한 내용만 급하게 작성해놔서 추후 수정 예정입니다…
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
'백엔드' 카테고리의 다른 글
[IT] 장애 대처 방안 (온라인 서비스, 배치 잡) (1) | 2023.09.10 |
---|---|
[DB] 유량제어 개발 시 Redis를 통해 어떻게 대기열 큐를 구현할 수 있을까? (0) | 2023.09.01 |
[DB] 오라클에 이모지(Emoji)를 저장할 수 있을까? (0) | 2023.08.31 |
[스프링] 클라이언트가 에러났을때도 ResponseDTO를 내려달라고 하면 어떻게 해야할까? (0) | 2023.08.30 |
[스프링] 예외처리 종류과 효과적인 사용 방법 (0) | 2023.08.29 |