RDB4 [Join Series] 3. Hash Join 필자가 기획한 조인 시리즈의 마지막 주인공은 해시 조인이다 일반적으로 해시 조인은 다른 조인들에 비해 비교적 좋은 성능을 보인다고 알려져 NL 조인과 소트 머지 조인 대신 무분별하게 사용하는 케이스가 종종 있는 바로 그 해시 조인이다 그럼 해시조인이 빠르다는 얘기는 과연 사실이고, 무분별하게 사용해도 괜찮을까?? 해시조인이 빠른 건 사실이지만 필자는 해시 조인을 무분별하게 사용하는 건 추천하지 않는다 위 내용을 정확히 알려면 해시 조인이 어떻게 동작하는지 그 매커니즘을 알아야 한다 이번에도 A 테이블과 B 테이블이 조인하는 경우를 예시로 들어보자 (A= Driving, B= Innier. A.id = B.A_id) A 테이블과 B 테이블 중 더 작은 테이블(Build Input) 을 해시 테이블로 생성.. 2025. 4. 5. [Join Series] 1. NL Join (Nested Loop) 조인 시리즈 첫 번째 주제는 NL 조인이다. 가장 기본적이고, 자주 사용되는 조인 방식이지만, 다른 조인(소트 머지 조인, 해시 조인)에 비해 느리다는 오명으로 사용을 기피(?) 하기도 하는 조인 방식이다 이번 글에선 NL 조인의 AtoZ 까지는 아니지만.. AtoG 정도까지는 다뤄볼 예정이다 느리다는 오명은 왜 생긴거고, 어떻게 사용해야 하는지 알아보자 먼저 NL 조인은 Nested Loop라는 이름에서 유추할 수 있듯이 조인하고자 하는 A, B 테이블을 Loop를 돌며 건건이 찾아 조인하는 방식이다 그러한 특징으로 인해 A,B 테이블의 인덱스 사용이 거의 필수적인 것이 특징이다. (상황에 따라 인덱스를 사용하지 않는 케이스도 있다 - Sorintg 된 테이블을 Full Scan이 더 효율적이라거나.. 2025. 3. 22. [Join Series] 매번 눈에 밟히는 그 조인 시리즈 앞으로 조인 시리즈 3편을 연재할 예정이다 쿼리 플랜을 보면 항상 눈에 밟히는 - Nested Loop Join - Sort Merge Join - Hash Join 이 삼 형제가 바로 주인공이다 조인 시리즈 연재 이후 더 다루고 싶은 내용이 있긴 한데... 일단 조인 3형제 시리즈를 모두 연재한 뒤 시간이 허락하면 그다음 내용도 진행해 보겠다 2025. 3. 18. RDB 성능 개선하기 - BETWEEN vs LIKE RDB를 운영하다 보면 범위검색은 심심치 않게 발생한다 이번 글에선 범위 검색 중 흔히 사용하는 조건절의 BETWEEN과 LIKE의 차이 및 효율에 대해 다뤄보고자 한다 먼저 이해를 돕기 위해 송금 집계 테이블이 있다고 가정하자 송금 집계 테이블엔 송금 날짜, 송금 타입 컬럼이 있다 송금 집계 테이블의 송금 날짜 레코드는 202312 ~ 202501까지 존재한다송금 집계 테이블의 송금 타입 레코드는 A와 B가 있으며, A = 90만 건, B = 10만 건 (9:1) 비율로 존재한다 송금 집계 테이블엔 (송금 날짜, 송금 타입) 인덱스가 존재한다 (편하게 idx1 로 부르자)위 정보를 바탕으로 idx1를 시각화하면 다음과 같다 우린 2024년에 B 타입으로 송금한 레코드 정보를 찾기 위해 다음과 같은 조건.. 2025. 3. 8. 이전 1 다음 반응형