1. 적중 리스트를 최소화해야한다.
SELECT * FROM sflight
INTO wa
WHERE carrid = 'LH'.
WRITE : / wa-carrid.
ENDSELECT.
=> ❌
SELECT * FROM sflight
INTO wa
CHECK wa-carrid = 'LH'.
WRITE : / wa-carrid.
ENDSELECT.
=> 𝐎
2. 전송되는 데이터 양을 최소화해야한다.
SELECT * FROM sflight
INTO wa
WHERE carrid = 'LH'.
WRITE : / wa-carrid.
ENDSELECT.
=> ❌
SELECT carrid FROM sflight
INTO wa-carrid
WHERE carrid = 'LH'.
WRITE : / wa-carrid.
ENDSELECT.
=> 𝐎
SELECT carrid FROM sflight
INTO wa-carrid
WHERE carrid = 'LH'.
IF SY-DBCNT > 10.
EXIT.
ENDIF.
ENDSELECT.
=> ❌
SELECT carrid FROM sflight
Up To 10 ROWS
INTO wa-carrid
WHERE carrid = 'LH'.
ENDSELECT.
=> 𝐎
3. LOOP에 소요되는 비용을 최소화해야한다.
1. array 기능 활용하기
single insert(update, delete, modify)대신 array INSERT를 사용하는 것이 좋다.
즉, Work Area를 이용해 개별 row마다 테이블에 INSERT하는 것보다 인터널 테이블로 한번에 작업하는 것이 효율적이다.
LOOP AT itab INTO wa.
INSERT INTO sflight
VALUES wa.
ENDLOOP.
=> ❌
INSERT sflight
FROM TABLE itab.
=> 𝐎
2. nested select 구문을 피하자.
inner join, for all entry, subquery사용 권장
4. 검색비용을 최소화
SELECT * FROM sflight
INTO wa
WHERE carrid <> 'LH'.
AND connid = '0400'.
=> ❌
SELECT * FROM sflgiht INTO wa
WHERE carrid IN
( SELECT carrid
FROM scarr
WHERE carrid <> 'LH')
AND connid = '0400'.
=> 𝐎
5. 데이터베이스 부담제거
SELECT * FROM sflight
INTO TABLE itab
WHERE carrid = 'LH'
ORDER BY carrid connid.
=> ❌
SELECT * FROM sflight
INTO TABLE itab
WHERE carrid = 'LH'.
SORT itab BY carrid connid.
=> 𝐎
6. 인덱스에 사용된 필드 모두 기술
- SQL문에 가장 영향을 미치는 것 : 인덱스 where 조건과 테이블 JOIN조건인 ON구문도 인덱스로 구성된 필드를 사용하는 것이 효율적임
- 인덱스에 사용된 모든 필드는 모두 기술하는 게 좋다.
- where 조건에 사용될 carrid 값을 모를 경우에는 range 변수를 이용해 빈 값을 INSERT 하고 SELECT해야 적절하게 인덱스를 활용할 수 있다.
SELECT * FROM sflight
INTO TABLE itab
WHERE connid = '0017'
AND fldate = '20140101'.
보다는 r_carrid-sign... 이런식으로 자세하게 세부사항을 찾는게 낫다.
7. 정렬은 가급적으로 APPLICATION SERVER에서 실행해야함
- order by구문 보다는 application server에서 인터널 테이블을 sort하는 것이 효율적이다.
'SAP' 카테고리의 다른 글
easy abap 17. 파라미터 타입정의, 구조체, 인터널테이블, tables구문 (0) | 2025.05.10 |
---|---|
easy abap 16. subroutine parameter- call by value, call by reference, call by value and result (0) | 2025.05.10 |
easy abap 14. modify (0) | 2025.05.09 |
easy abap 13. Delete (0) | 2025.05.09 |
easy abap 12. Update (0) | 2025.05.09 |