본문 바로가기
카테고리 없음

드라이빙(Driving) 테이블 정하는 방법 (임시 테이블, 일반 테이블)

by 노력남자 2025. 6. 3.
반응형

✅ 1. 임시 테이블 vs 일반 테이블

  • **보통 임시 테이블을 driving table (왼쪽)**으로 두는 것이 유리합니다.
  • 이유: 임시 테이블은 일반적으로 작고 메모리에 존재하는 경우가 많아, 먼저 읽고 일반 테이블과 조인하는 것이 효율적입니다.
SELECT * 
FROM temp_table STRAIGHT_JOIN normal_table 
ON temp_table.id = normal_table.id;

✅ 2. 임시 테이블 vs 임시 테이블

  • 둘 중 더 작은 테이블을 driving으로 쓰는 것이 좋습니다.
  • 두 임시 테이블의 크기나 인덱스 유무에 따라 다르므로 **실제 실행 계획(EXPLAIN)**을 보고 판단해야 합니다.
SELECT * 
FROM smaller_temp STRAIGHT_JOIN larger_temp 
ON smaller_temp.id = larger_temp.ref_id;

✅ 3. 일반 테이블 vs 일반 테이블

  • 이 경우도 마찬가지로, 선택도(Selectivity)가 높은 쪽이나 행 수가 적은 쪽을 driving으로 잡습니다.
  • 인덱스가 잘 잡혀 있거나 필터링 조건이 많은 쪽을 먼저 읽는 게 좋습니다.
SELECT * 
FROM small_or_filtered STRAIGHT_JOIN large_table 
ON small_or_filtered.key = large_table.key;
 

🧠 정리: 일반 테이블 vs 일반 테이블의 STRAIGHT_JOIN 전략


상황 Driving Table으로 적합한 쪽
인덱스 없는 조인 컬럼 인덱스 없는 쪽
둘 다 인덱스 있음 더 작은 테이블 or 더 많은 조건이 있는 테이블
둘 다 인덱스 없음 더 작은 테이블
한쪽만 인덱스 있음 인덱스 없는 쪽

 

반응형

댓글