일반적으로 두 개이상의 테이블을 조인하게 되면, 속도가 자연스럽게 느려질 수 밖에 없다.
예를 들어, 아래와 같이 left join을 했다고 가정해보자.
select TA.A
,TB.B
,TC.C
from tbl_A TA
left join tbl_B TB
on TB.join_value = TA.join_value
left join tbl_C TC
on TC.join_value = TC.join_value
SQL
복사
tbl_A, tbl_B, tbl_C 테이블에서 모든 컬럼과 모든 데이터들을 조회하기 때문에 속도가 느려질 수 밖에 없는 쿼리다.
예를 들어,
select TA.A
,TB.B
,TC.C
from
(select A, join_value from tbl_A) TA
left join
(select B, join_value from tbl_B) TB
on TB.join_value = TA.join_value
left join
(select C, join_value from tbl_C) TC
on TC.join_value = TA.join_value
SQL
복사
위의 방식처럼 필요한 컬럼들만 가지고 join을 진행하거나, 서브 쿼리 안에 where, group by 필요하다면 넣어줘서 불러오는 데이터 양을 감소시킬 수 있다.
서브 쿼리 vs JOIN
서브쿼리보다 JOIN 이 더 빠르다고 한다. 성능 최적화를 해주기 때문이라고 함