subquery vs join, join 형태에 따른 성능 0 5 10,043

by 준티 [2016.10.21 15:18:32]


안녕하세요. 궁금한게 있어 질문드립니다.

1. subquery와 join. 둘중 무엇이 속도가 더 빠른가요?

(검색해본결과 join이 더 빠르다고는 하는데..)

현재 통계 페이지를 만들고 있어, 여러 테이블을 한꺼번에 조회해야 하는데요..

여기서 서브쿼리와 조인 중 뭘 택해야 될지 잘 모르겠습니다.

 

현재 4~5개 정도 테이블을 조인합니다.

그런데.. 몇개 테이블은

해당 테이블에서 필요한 컬럼이 1개 밖에 안되는데 그것떄문에 join을 걸자니 뭔가 낭비같아 보여서요..

이렇게 가져오는 컬럼이 몇개 안될 경우 서브쿼리 vs 조인 뭐가 낫나요??

 

2. join의 형태에 대해 질문..

A,B,C,D 4개의 테이블을 조인한다고 할떄

 

A inner join B

B inner join C

C inner join D

이렇게 하는거랑

 

(select * from A inner join B) ab

inner join

(select * from C inner join D) cd

이렇게 하는것이랑 성능차이가 얼마나 있나요?

 

계속 질문만 드리네요 ㅜㅜ

답변 부탁드립니다

by 마농 [2016.10.21 16:20:06]

특정 동일한 결과를 뽑는 두개의 완성된 쿼리를 비교할 수는 있습니다.
그러나 서브쿼리와 조인을 일반화시켜서 비교할 수 없습니다.


질문하신 형태의 서브쿼리는 From 절의 서브쿼리로 인라인뷰라고 부르며
인라인뷰를 감싼다고 쿼리가 느려지지는 않습니다.
보통 일반적인 인라인뷰는 내부적 쿼리 변환 과정을 통해 일반 조인과 동일하게 동작합니다.


쿼리 성능에 있어 일반화는 위험합니다.
케이스 바이 케이스로 접근하셔야 합니다.


by 준티 [2016.10.21 17:03:08]

감사합니다..

케바케라.. 어렵네요 ㅠ.ㅠ


by 준티 [2016.10.21 17:04:34]

아.. 서브쿼리는 스칼라 서브쿼리를 말하는것이었습니다!

이래도 케바케일까요?


by 마농 [2016.10.21 17:18:45]

스칼라서브쿼리는
 - 단점 : 메인쿼리 결과 건수 만큼 반복 수행 됩니다.
 - 장점 : 캐싱 기능이 있습니다.(반복되는 입력값에 대해서는 재수행 안합니다)


메인 테이블에서 서브쿼리로 입력되는 값이 중복이 적다면? 불리합니다.
메인 테이블에서 서브쿼리로 입력되는 값이 중복이 많다면? 유리합니다.
코드 테이블에서 코드명칭 가져오는 경우 스칼라가 유리할 수 있습니다.


by 준티 [2016.12.01 10:05:56]

확인하고 답변을 못달았었네요 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입