Search

쿼리 효율적으로 짜기

일반적으로 두 개이상의 테이블을 조인하게 되면, 속도가 자연스럽게 느려질 수 밖에 없다.
예를 들어, 아래와 같이 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 이 더 빠르다고 한다. 성능 최적화를 해주기 때문이라고 함