-
[Mysql] 조인 테이블 조회시 드라이빙? 드리븐? 테이블 설명 및 STRAIGHT_JOIN 힌DB/Mysql 2025. 4. 22. 16:26728x90반응형
드라이빙 테이블과 드리븐 테이블이란?
SQL에서 여러 테이블을 조인할 때, 옵티마이저는 효율적인 조인을 위해 조인의 시작 테이블과 그 이후 조인될 테이블을 구분합니다. 이를 각각 드라이빙(Driving) 테이블과 드리븐(Driven) 테이블이라고 합니다.
🚗 드라이빙 테이블 (Driving Table)
- 조인의 시작점이 되는 테이블입니다.
- 옵티마이저가 가장 먼저 액세스합니다.
- WHERE 조건의 선택도(Selectivity)가 높은 테이블일수록 유리합니다.
🧭 드리븐 테이블 (Driven Table)
- 드라이빙 테이블의 결과에 따라 조인되는 테이블입니다.
- 보통 루프 안에서 여러 번 조회됩니다.
- 인덱스를 잘 걸어야 성능 저하를 방지할 수 있습니다.
예시 쿼리에 적용해 보기
SELECT * FROM C JOIN B ON C.id = B.id JOIN A ON A.id = B.id WHERE B.id > 0 AND B.id < 10 AND B.deleteFlag AND C.memberId = 100 ORDER BY B.id DESC;
이 쿼리에서 예상되는 조인 순서:
- C (Driving Table) -
memberId = 100
조건으로 선택도가 높음 - B (Driven Table) -
id, deleteFlag
조건 추가 필터링 - A (Driven Table) - 마지막 조인
STRAIGHT_JOIN 힌트란?
STRAIGHT_JOIN
은 옵티마이저에게 조인 순서를 강제로 고정하라고 지시하는 SQL 힌트입니다.SELECT * FROM C STRAIGHT_JOIN B ON C.id = B.id STRAIGHT_JOIN A ON A.id = B.id WHERE B.id > 0 AND B.id < 10 AND B.deleteFlag AND C.memberId = 100 ORDER BY B.id DESC;
이 힌트를 사용할 경우, 테이블은 C → B → A 순서로 고정되어 조인이 수행됩니다.
Tip:
EXPLAIN
으로 실제 조인 순서를 확인하며 성능을 체크해보세요.728x90반응형'DB > Mysql' 카테고리의 다른 글
[Mysql] 샤딩과 파티셔닝에 대해 알아보자! (0) 2025.04.22 [Mysql] slow query 발생 원인 및 해결 방안을 알아보자! (0) 2025.04.22 [Mysql] 인덱스는 어떻게 동작할까? (1) 2025.04.17 [Mysql] 트랜잭션과 ACID 이해하기! (0) 2025.04.15 [Mysql] 인덱스 생성 시 고려 사항 (테이블, 쿼리 예제) (0) 2025.04.15