홈 › 대용량·배치 › 02 / 8

조인 방식: Nested Loop, Hash, Sort Merge 와 드라이빙 테이블

섹션 6진행 0 / 8

조인 방식: Nested Loop, Hash, Sort Merge 와 드라이빙 테이블

같은 조인 쿼리도 DB 안에서는 세 가지 방식 중 하나로 실행됩니다. Nested Loop 는 바깥 표의 행마다 안쪽 표를 찾고, Hash 는 작은 쪽으로 해시 표를 만들어 큰 쪽을 훑고, Sort Merge 는 양쪽을 정렬해 병합합니다. 이 레슨은 세 방식의 동작 원리와 드라이빙 표(먼저 읽는 표)가 성능을 가르는 이유, 조인 키 인덱스의 역할, 범위 조인이 Hash 에 안 맞는 이유를 다룹니다.

1. 왜 배우는가

대용량 배치에서 느린 쿼리의 상당수는 조인이 원인입니다. 결과는 같은데 시간이 수십 배 차이 나는 일이 흔합니다. 이유는 옵티마이저가 조인 방식과 읽는 순서를 다르게 골랐기 때문입니다.

방식을 알면 계획을 볼 때 "왜 이 표를 먼저 읽었는가", "왜 인덱스를 안 탔는가" 를 스스로 물을 수 있습니다. 반대로 방식을 모르면 인덱스를 만들거나 힌트를 붙이는 일이 감에 의존하게 됩니다.

이 레슨은 중급 03 조인과 중급 09 인덱스를 안다고 보고 진행합니다. 실행 계획을 화면에서 읽는 법은 대용량 01 실행 계획에서 따로 다루고, 이 레슨은 계획에 나오는 조인 방식의 원리에 집중합니다. 인덱스를 어떻게 설계할지는 다음 레슨 인덱스 튜닝에서 이어집니다.