2~3개 말고 4개~5개 정도 되는 테이블이라면 어떻게 처리를 해야할까요??
요즘 이것때문에 골머리를 썩히고 있습니다;;;
댓글 5
-
슈리
2007.12.29 20:39
-
전컴
2007.12.30 01:58
앞에 분의 설명에 보충을 하자면... FOR ALL ENTRIES IN itab 을 쓸때 앞에 itab[]의 INITIAL체크를 하지 않으면, itab[]에 값이 없을 경우, 모든 데이타를 쿼리합니다. LOOP문이후에 READ문을 사용하여 값을 가져올때 READ문에 사용하는 itab을 먼저 SORT후 READ TABLE itab WITH KEY ... BINARY SEARCH. 를 하시면 속도면에서도 좋은 효과를 보실 수 있습니다...
조금이나마 도움이 되셨길 바랍니다. ^^
-
태양의맛썬칲
2007.12.30 06:55
답변에 감사합니다~ -
구리다웅
2008.01.02 23:19
저 역시 비슷한 일로 고민한 적이 있어 테스트 해봤습니다만, 속도가 아주 안습입니다. 조인 많이하면 대략 난감 입니다. -
버즈즈
2008.01.08 00:43
open sql 또한 db에서 사용하기 위해서는 db에서 사용하는 native sql형태로 변환이 되지 않나요..
조인이 많을 경우 이단계에서 쿼리 문장이 복잡하게 만들어 져서 속도가 느려지는것 같은데요..
제생각으로는 한번에 여러개 테이블을 동시에 조인하는 방법은 별로 선호하지않습니다.
쿼리가 길어지면 길어질수록 오류를 잡아내기가 힘들어지거든요..
처음에 중심이되는 2~3개 테이블을 조인하여 인터널 테이블에 넣어두고
두번째 테이블 조인할때는 SELECT 절안에
FOR ALL ENTRIES IN 을 사용하여 여러개테이블을 동시에 조인하는것을 피하고 있습니다.
이렇게 몇개의 인터널 테이블을 작성한후에
중심이되는 인터널 테이블을 LOOP 돌리면서 이미 제작해둔 인터널테이블을 READ 하여 값을 집어넣는방식을 쓰고있습니다.
FOR ALL ENTRIES IN 을쓰실때..사용되는 인터널 테이블은 셀렉트절앞에서 필히 INITIAL 체크를 꼭해줘야합니다.