안녕하세요.
공사중 입니다.
SAP 가 HANA DB 기반으로 넘어오면서 그동안 가이드했던 골든룰 중에 뭣이더 중하고 뭣이좀 덜 중하고, 이건 안봐도 되고 .. 블라블라. 하는 이야기를 들어보셨을거에요.
세부적으로 보면 이런저런 이야기가 많지만, 간단하게 요약해 보면... ...
SAP 성능 향상 가이드라인 | 단순 요약 | HANA 변경후 중요성 |
결과 세트를 작게 유지 | Select single -> select & loop Where 구문을 구체적으로 활용. |
이전처럼 중요 |
전송되는 데이터의 양 최소화 | Select * -> Select ( Field lists ) 집계함수(COUNT, MIN, MAX, SUM, AVG) 사용 |
더 중요 |
데이터 전송 횟수 최소화 |
중첩 SELECT 대신 JOIN 및 / 또는 하위 쿼리 사용 |
더 중요 |
검색 오버 헤드 최소화 | 적절한 인덱스 사용. | 덜 중요 |
데이터베이스에서 부하 유지 | 중복데이터 읽지 않기 Table Buffer 사용. ABAP Layer 에서 데이터 정렬 |
덜 중요 |
이중에 전송되는 데이터의 양 최소화 에는
Column 기반 Table 을 사용하기 때문에 Select * 를 사용하는 것보다 Select ( Field list ) 를 사용하는게 더 중요하다 라는 내용이 있습니다.
저도 당연히 그런줄 알고 있었죠~~~!!!!
하지만, S/4HANA 에서 소비기반으로 알아서 가져온다는 이야기가 귀에 들려서 검증에 들어가 보았습니다.
아래의 코드 블럭의 경우, 당연하게도 모든 컬럼에 다 접근을 하게 되겠죠?
select *
from bkpf
into TABLE @data(itab).
보통은 아래처럼 필요한 컬럼만 가져와야죠~~
SELECT BUKRS,
BELNR,
GJAHR
FROM BKPF
INTO TABLE @DATA(ITAB).
그런데.. 놀랍게도....
TYPES : BEGIN OF TY_KEY,
BUKRS TYPE BUKRS,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
END OF TY_KEY.
DATA : ITAB TYPE TABLE OF TY_KEY.
SELECT *
FROM BKPF
INTO CORRESPONDING FIELDS OF TABLE @ITAB.
Select * 를 사용해서 Open Sql 을 실행했을때, 동일한 결과가 나타납니다. !!!
결론을 말씀드리면,
원하는 필드에 해당하는 데이터만 가져오는건 당연하지만,
S/4HANA 에서는 반드시 Select * 를 사용하지 말아야 하는건 아닙니다.
※ (오해금지) 실제 사용하는 필드의 데이터만 가져오는 부분은 HANA DB 에서 매우 중요합니다. !!
끝..
'ABAP' 카테고리의 다른 글
SAP CDS View 에 대한 초보적인 실수 (2) - 수량/금액 필드 (0) | 2021.04.26 |
---|---|
SAP CDS View 에 대한 초보적인 실수 (1) - Key Field Setting (1) | 2021.04.22 |
SAP CBO 에서 Standard Change Log 사용하기. (2) | 2021.04.14 |
SAP SMARTFORMS 에서 Legacy Editor 사용하기. (6) | 2021.04.14 |
SAP 운영 서버 에서 IMG 수정할 수 있도록 하는 방법 (0) | 2021.04.14 |