정의
JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 결과 집합으로 표현해주는 수단
종류
- Inner Join: ‘기준 테이블’과 ‘조인 테이블’ 모두 데이터가 존재 해야 조회되는 방식의 join
- Outer Join: ‘기준 테이블’에만 데이터가 존재하면 조회되는 방식의 join
- left join
- right join
- full outer join
드라이빙, 드리븐 테이블
드라이빙 테이블: join시에 먼저 엑세스 되는 테이블.
드리븐 테이블: 나중에 엑세스되는 테이블은 드리븐 테이블.
만약 찾고자 하는 조건에 맞는 행이 A테이블에 5000만건, B테이블에 1000만건이 있을 때
where A.no = B.no 를 수행한다고 하면
단순 레코드 수 비교
- A테이블이 드라이빙이면
A테이블의 1번째 행의 no를 B테이블에서 찾아 매칭되는지 확인
A테이블의 2번째 행의 no를 B테이블에서 찾아 매칭되는지 확인
A테이블의 3번째 행의 no를 B테이블에서 찾아 매칭되는지 확인
...
이렇게 A테이블이 B테이블을 5000만번 조회해야 합니다.
- B테이블이 드라이빙이면
1번과 동일한 방식으로 B테이블이 1000만번 A테이블을 조회해야 합니다.
위의 경우를 보았을 때 한 테이블을 5000만번 조회하는 것과 1000만번 조회하는 것은 속도면에서 큰 차이가 있게 됩니다.
결국에는 만족하는 데이터 수가 작은 A테이블이 드라이빙 테이블이 되어 먼저 엑세스되고, 후에 데이터 수가 큰 B테이블을 엑세스해야 성능면에서 더 유리합니다.
인덱스의 유무 차이
위의 join이 일어나면 우선 테이블의 인덱스 유무를 살피게 됩니다.
인덱스가 있다면 데이터 조회 시에 Full Scan이 일어나지 않기 때문에 인덱스가 있는 테이블을 드리븐 테이블로 두면 드라이빙 테이블이 드리븐 테이블에 대해서 반복적으로 Full Scan을 하지 않아 더 빠릅니다.
따라서 인덱스가 한쪽 테이블에만 있으면, 인덱스가 없는 테이블을 드라이빙 테이블로 하게 됩니다.
Reference
https://programming-workspace.tistory.com/67
[데이터베이스] SQL 튜닝 - 드라이빙 테이블
데이터베이스를 통해 데이터를 가져올 때 테이블의 엑세스 순서에 따라서 성능이 좌지우지 되는 경우가 있습니다. 특히 데이터가 많은 경우에는 이러한 성능을 개선해주는 튜닝이 중요해지게
programming-workspace.tistory.com
[MYSQL] 📚 테이블 조인(JOIN) - 그림으로 알기 쉽게 정리
SQL JOIN JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 주는, Relation Database 에서 가장 많이 쓰이는 녀석이다. (INNER) JOIN 조인하는
inpa.tistory.com
'Computer Science > Database' 카테고리의 다른 글
클러스트링과 Replication (0) | 2024.04.23 |
---|---|
파티셔닝과 샤딩 (0) | 2024.04.23 |
DB Index (0) | 2024.04.23 |
Transaction (0) | 2024.04.23 |
PK와 Unique Key의 차이 (0) | 2024.04.16 |