2009년 4월 16일 목요일

Table Join시 간단하지만 조심하자

어제 SQL 문장들을 살펴보다 그간 무심코 지났쳤던 것을 찾았다.

어의가 없는 것이었다. 이젠 그런 과오를 범하지 말아야지.

단순한 것이다. 어쩜 누구나 알고 있는...

세개의 테이블을 조인하는데 A와 B는 마스터와 상세내역이고 나머지는 머 출고라고 하자. 물론 A, B는 마스터 상세내역으로 키가 연결이 되어있다. 즉 문제가 없다. 다만 마지막 출고테이블을 조인할 경우에 조인하는 필드가 세개라고 한다면 그 세개를 모두 한 테이블에서 가져오는 것이 속도에서 엄청난 차이를 보인다는 것이다.

즉...

SELECT A.REQNO, B.PRODCODE, C.OUTQTY
FROM GEREQMT A, GEREQDT B, GEPROTMT C
WHERE B.REQNO = A.REQNO
AND C.REQNO = B.REQNO
AND C.PRODCODE = B.PRODCODE

이렇게 해야 한다는 것이다.

만일 아래와 같이 한다면...

SELECT A.REQNO, B.PRODCODE, C.OUTQTY
FROM GEREQMT A, GEREQDT B, GEPROTMT C
WHERE B.REQNO = A.REQNO
AND C.REQNO = A.REQNO
AND C.PRODCODE = B.PRODCODE

인내심을 길러야 할 거 같다.

댓글 없음:

댓글 쓰기