JOIN 방향에 따른 결과 행수와 효율적 데이터 조회 방법 질문
77
1 asked
안녕하세요, 강사님.
데이터를 효율적으로 JOIN 하여 어떻게 가져올지에 대한 방안에 대해 고민하던 중, 궁금한 점이 있어 질문을 드립니다.
강사님의 강의를 들으며 JOIN 시 결과 행수 차이에 대해 아래와 같이 이해했습니다.
부모 테이블에서 자식 테이블로 JOIN할 경우
→ 결과 행수가 부모 기준으로 유지된다.자식 테이블에서 부모 테이블로 JOIN할 경우
→ 결과 행수가 자식 행수에 따라 크게 늘어날 수 있다.
그렇다면 아래와 같은 상황에서 어떻게 처리하는 게 효율적일지 궁금합니다.
강의 상세 페이지처럼 여러 유형의 데이터를 한 번에 가져와야 하는 경우
> 예시) 강의 정보, 강사 정보, 강의 평점, 강의 리뷰 등
부모 테이블(강의)에서 자식 테이블(강사 정보, 강의 평점)로 JOIN할 때, 결과 행수가 부모 테이블 기준으로 유지되거나 크게 늘어나지 않는 상황에서는 한 번의 쿼리로 모든 데이터를 조회하는 것이 좋은 방법일까요 ?
반대로, 강의 리뷰처럼 자식 테이블의 데이터가 많아져서 결과 행수가 급격히 늘어날 경우에는 리뷰 데이터만 별도의 쿼리 또는 API로 분리해서 조회하는 것이 더 바람직할지 궁금합니다.
결국, 관계 방향과 데이터 양에 따라 결과 행수가 크게 늘어나지 않는 JOIN까지만 한 번에 처리하고,
행수가 많아지는 데이터(예: 리뷰)는 별도로 쿼리하거나 API를 분리하는 전략이 좋을지, 그리고 쿼리/API 분리 기준을 어떻게 결정하는게 좋을지 설명해주시면 큰 도움이 될 것 같습니다.
감사합니다.
Answer 1
0
안녕하세요. tyiju님, 공식 서포터즈 y2gcoder입니다.
제가 같은 상황이라면 상세 페이지 조회에 필요한 API는 말씀하신 것과 같이 강의를 기준으로 강의 행 수에서 늘어나지 않는 것들만 JOIN으로 / 나머지는 별도의 API 로 분리해서 호출할 것 같습니다 🙂
또한 진행함에 따라 강의 정보만 별도로 조회해야할 때가 있을 때 등을 고려해서 각 섹션을 잘게 쪼개는 방법도 고려해볼 것 같습니다.
API 분리 기준은 상황에 따라 다르다고 생각합니다.
먼저 잘게 쪼개 놓고 자주 같이 조회하는 패턴은 합치기
합쳤다가 별개로 조회하는 경우가 많을 때는 쪼개기
의 2가지로 크게 분류할 수 있을 것 같습니다!
처음부터 많은 부분을 다 고려해서 설계하기 보다는 잘게 쪼개서 간단한 API 형태를 잡아놓고, 사용하는 양상을 보며 합치는 것도 좋은 선택지라 생각합니다 🙂
감사합니다.
ON을 명시하지 않았을 경우 질문드립니다.
0
56
1
강의 2:53 union을썼는데도 션이 중복
0
57
1
where 대신 having을 써도 되나요?
0
79
1
주문 내역에 대한 고객 데이터
0
60
2
in 수행
0
43
1
외부조인1 강의 관련 질문
0
71
3
커버링 인덱스와 랜덤i/o 질문
0
68
1
오타인거죠?
0
76
1
섹션 3 퀴즈 3번 문제
0
73
2
GROUP BY 기준 컬럼
0
84
1
질문이 있습니다
0
54
1
오타
0
76
2
실제 상용 서비스 질문
0
97
1
파티셔닝 관련 질문입니다.
0
57
1
join 문제 풀이2 문제1(self join) 질문
0
64
1
9. 인덱스2.pdf 중에서
0
77
1
문제 2번
0
66
2
문제와 풀이1 - 3번 문제
-1
70
2
잘 사용하진 않지만 풀 외부 조인을 사용하신 사례가 궁금합니다!
0
91
1
[58. 인덱스와 정렬]을 듣다가 질문입니다.
0
93
2
두개 이상의 테이블을 조인할때 인덱스 질문이 있습니다.
0
59
1
파일을 만드는 단위가 궁금해요
0
70
1
MySQL은 실무에서 사용하는 케이스도 있을까요?
0
80
1
인덱스 설계와 실제 운영의 관계
0
68
1

