일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프리코스
- 백준
- 프로그래머스
- HTTP
- JUnit5
- REDIS
- Paging
- Spring Batch
- mock
- 우아한세미나
- 의존성
- 우테코
- 미션
- 서블릿
- 자바
- CircuitBreaker
- 레벨2
- Docker
- 스프링부트
- yml
- 코드리뷰
- Level2
- AWS
- 스프링 부트
- JPA
- AOP
- 세션
- MSA
- 트랜잭션
- 우아한테크코스
Archives
- Today
- Total
목록2025/05/17 (1)
늘
NestedLoop Join을 Hash Join으로 변경하여 쿼리 속도 개선
실무에서 정산 쿼리가 있었는데 쿼리 길이만 152줄(with절을 통해 cte 테이블을 만들고 이를 중첩 join 사용)이 되었다. 실제로 매우 느렸던 문제를 이론으로 접하고 있던 hashJoin을 적용함으로써 성능 개선했던 경험을 작성하고자 한다.상황3.5만개의 데이터를 O(n**2)으로 처리-> 12억번 조회해야한다. 실행계획을 확인하면 NestedLoop Join이 여러번 사용되었다.대량의 데이터는 NestedLoop Join(O(N*M)보다 Hash Join(O(N+M) 혹은 Sort Merge JoinO(N log N + M log M)을 사용하면 개선 여지가 있다. Hash JoinBuild Phase:조인 대상 테이블 중 작은 테이블(보통 메모리에 올릴 수 있는 쪽)을 기준으로 해시 테이블을 ..
백앤드 개발일지/데이터베이스
2025. 5. 17. 13:41