티스토리 뷰

A 테이블을 직원 이라고 하고

B 테이블을 담당업무 라고 하자


* A

ID

이름 

김노노 

박예예 

최하하 



* B

ID 

 담당업무

A_ID

 1

디자인

 2

안드로이드 

 3

아이폰 

 4

Database 

 5

PHP



테이블을 보면..

디자인, php 는 김노노씨가 담당중하고

안드/아이폰/DB는 박예예 씨가 담당중이다.


최하하 씨는 놀고있다..


여기서 아래와 같은 결과를 뽑아오려면 어떻게 해야할까?


 이름

담당업무 

최하하 

NULL 



Left Outer Join을 이용하자.


SELECT A.이름 B.담당업무

FROM A

LEFT OUTER JOIN B

ON A.ID=B.A_ID

WHERE B.담당업무 IS NULL


위와 같이 쿼리를 날릴경우 가능함

그러나 이러한 경우, B테이블의 Record 갯수가 많을 경우 시간이 오래걸린다.


예를들어 A 테이블 직원row가 2000명, B테이블 담당업무row가 30만개 라면...

Full scan하기 때문에..적어도 2~3분은 소요될 것이다.(따로 index같은것이 정확하지 않을 경우)


이럴경우.. 우선 플랫폼단에서 조회항목에 대한 제한을 걸어 B 테이블의 조회 건수를 대폭 줄이거나...

다른 성능 향상을 위한 튜닝을 해보자..






공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함