작성
·
294
0
과목별 평균 시험절수 얼마? 문제 2번 풀이 하실 때
서브쿼리를 사용하셨는데
조인문으로 해도 결과는 동일하게 나오는데
select
courses.title as 과목명
, round(avg(grades.exam_score), 2) as 평균시험점수
from grades
inner join courses
on grades.course_id = courses.id
group by courses.title ;
서브쿼리를 사용해서 데이트를 조회하는게
그냥 조인문을 사용해서 사용하는것보다 데이터 조회 속도가 빨라서 그렇게 하신걸까요?
답변 1
0
거기까지 생각안하고
그냥 JOIN으로 풀려서
풀었습니다만 😅
특정 쿼리를
조인과 서브쿼리로 모두 작성 가능하다면
보통 JOIN으로 작성하는게 좋습니다
(물론 모두 그런 건 아님, 여러 상황을 고려해야함)
가장 최적의 방법은
양쪽의 쿼리를 비교 분석하여
더 빠른 쿼리를 작성하는 것입니다
고려해야할 요소로는
성능, 가독성, 유연성 정도가 있겠습니다
성능
일반적으로 처리 속도에서는 JOIN이 빠릅니다
가독성
테이블간 관계를 나타냄에 있어 JOIN이 가독성이 좋습니다
유연성
복잡한 로직이나 조건,
또는 통계 정보 추출 시
Subquery가 활용에 좋습니다
정리
JOIN이 좋은 경우:
여러 테이블 간의 관계를 명확하게 표현하고 싶을 때
성능을 최적화하고 싶을 때 (대용량 테이블에서 특히 중요)
OUTER JOIN을 통해 관련이 없는 레코드도 포함하려고 할 때
Subquery가 유리한 경우:
복잡한 로직이나 조건을 처리해야 할 때
작업을 단계별로 나누어 처리하고 싶을 때
상황에 따라 다양한 위치에서 사용하고자 할 때 (SELECT, WHERE, HAVING, FROM 절 등)