안녕하세요..
즐거운 명절입니다...다들 새해 복 많이 받으세요~
저는 유지보수 업체 서버 마이그레이션 때문에 연휴에 계속 출근해야 되는..상황입니다..ㅠㅠ
또 이렇게 질문을 드리는 이유는 SQL좀 봐주십사 하구요..
회계감사를 받는데 회계법인에서
작년에 발생한 회계전표 중 특정 G/L 계정이 포함된 전표를 모두 다운 받아 달라고 하네요..--;
2주동안 이방법 저방법 해보았는데
한달치도 다운이 안됩니다..
덤프가 떨어지구요..TIME OUT..
서버가 좀 느린이유도 있고, 제 컴 성능이 좀 떨어지는 것도 있지만..
일단 SQL 문을 손을 봐야할 것같아서요..
고수분들의 도움의 손길을 바랍니다..
제가 짠 SQL문은
===================================================================
SELECT b~bukrs b~blart b~belnr
b~gjahr b~stblg b~budat
b~cpudt b~bldat b~awtyp
b~usnam b~ppnam
INTO TABLE it_bkpf
FROM bsis AS a
INNER JOIN bkpf AS b
ON a~bukrs = b~bukrs AND
a~belnr = b~belnr AND
a~gjahr = b~gjahr
WHERE a~bukrs EQ p_bukrs
AND a~belnr IN s_belnr
AND a~gjahr EQ p_gjahr
AND a~hkont IN s_hkont
AND a~budat IN s_budat
AND a~blart IN s_blart
AND b~bukrs EQ p_bukrs
AND b~stblg EQ space.
SORT it_bkpf BY belnr.
DELETE ADJACENT DUPLICATES FROM it_bkpf
COMPARING belnr.
REFRESH : it_bseg , tp_bseg.
CLEAR : it_bseg , tp_bseg.
IF NOT it_bkpf[] IS INITIAL.
SELECT bukrs gjahr belnr buzei
shkzg hkont sgtxt dmbtr xnegp
FROM bseg
INTO TABLE it_bseg
FOR ALL ENTRIES IN it_bkpf
WHERE bukrs EQ it_bkpf-bukrs AND
belnr EQ it_bkpf-belnr AND
gjahr EQ it_bkpf-gjahr .
ENDIF.
============================================================
이렇게 됩니다.
일단 BSIS와 BKPF를 조인한다음 BSEG를 읽는 것은데
속도를 획기적(?)으로 줄일 수 있는 방법이 있는지요..
BSIS의 인덱스는..
Z1 MANDT+BUKRS+HKONT+BUDAT+KOSTL
Z2 MANDT+BUKRS+BELNR+GJAHR+HKONT
Z3 MANDT+BUKRS+ZUONR+AUGBL+BLART
Z4 MANDT+BLART+BUDAT
Z5 MANDT+BUKRS+HKONT+GJAHR+MONAT+BUDAT
이렇게 5개가 생성되어있습니다..
1개월의 데이터 량은 400만건이 좀 넘습니다..
고수분들의 가르침을 기다리고 있겠습니다....^^
댓글 5
-
COCO
2008.02.06 23:53
-
창천 구 만리
2008.02.08 05:25
음...400만건이면 단순 select로는 어렵습니다.
병렬 처리로 가셔야 할 듯 하네요.
작년 한 해라는 한정 조건이 있으니,
task를 새로 생성하실 때 마다 일자 조건을 변경하셔서 조회 하시고,
취합을 하시면 빨라질 듯 하네요.
-
UKS
2008.02.08 19:59
병렬처리라고 하심은...
그냥 일별로 다운을 받아서 취합하라는 말씀이신가요??
-
모모
2008.02.12 00:47
기존에 대량의 전표데이터를 처리하는 비슷한 내용을 문의하신 분이 있습니다.
아래 링크를 참조하세요
http://e-abap.servebbs.net/zb/bbs/zboard.php?id=ABAPQnA&no=221
-
pcj
2008.03.30 21:07
감사~
BSIS BKPF BSEG 뷰를 만들어서 한번 해보시는게 어떨까요??
저도 초보라 정확한 답변은 드릴수 없네요 ;;
연휴 잘보내세요~