1. SELECT SINGLE * INTO LS_0270T
FROM ZFI0270T
WHERE BUKRS = LS_BASIC-ORGUNIT
AND ANLN1 = LS_BASIC-ASSET
AND ANLN2 = LS_BASIC-SUBNUMBER
AND GJAHR = ( SELECT MAX( GJAHR )
FROM ZFI0270T
WHERE BUKRS = LS_BASIC-ORGUNIT
AND ANLN1 = LS_BASIC-ASSET
AND ANLN2 = LS_BASIC-SUBNUMBER
AND GJAHR <= <IS_PARAMETER>-FYEAR ).
LS_PARAMETER-BASEVAL_STATED = ls_0270t-afabe_01.
LS_PARAMETER-BASEVAL_STATED = ls_0270t-afabe_02.
LS_PARAMETER-BASEVAL_STATED = ls_0270t-afabe_10.
LS_PARAMETER-BASEVAL_STATED = ls_0270t-afabe_20.
이런넘이 둘 있습니다 매우 느립니다. 이걸 디센딩걸어서 select ~endselect로 바꿔봤으나 더 느려졌습니다
2. 하나DB는 잘 모르는데 @를 붙인 조건값들이 보입니다. 이게 AT의 의미로 보이는데 이것도 속도에 영향을 주나요?
(MANDT 를 적는것도 영향이 있을까요?)
3.하나 DB는 오라클 인덱스가 안먹나봅니다.
4. 프로그램을 고쳐서 돌려서
(t-code :st12 or sat에서 비교를 합니다. NET시간으로요, 이런 방법 말고 쿼리를 날리고 그 쿼리의 속도를 바로 확인하는 곳은 없을까요?)
아 대체 속도가 팍팍 준다는 HANA 디비인데...왜 손댈때 마다 속도가 퐉퐉 늘어만 가는지요. ㅠㅠㅠ
모든 좋으니 알려주셨음 좋겠습니다. 읽어 주셔서 고맙습니다.
1.
1. SELECT SINGLE * INTO LS_0270T
FROM ZFI0270T
WHERE BUKRS = LS_BASIC-ORGUNIT
AND ANLN1 = LS_BASIC-ASSET
AND ANLN2 = LS_BASIC-SUBNUMBER
AND GJAHR = ( SELECT MAX( GJAHR )
FROM ZFI0270T
WHERE BUKRS = LS_BASIC-ORGUNIT
AND ANLN1 = LS_BASIC-ASSET
AND ANLN2 = LS_BASIC-SUBNUMBER
AND GJAHR <= <IS_PARAMETER>-FYEAR ).
최근 년도 찾아오시는 듯 한데, 이것 두개 쿼리 분리 하면 어떨까요?
분리하는 이유는 기존의 쿼리가 최근 년도 찾고 zfi0270t 내역 select 하면서
zfi0270t 의 최근 년도 찾는 부분의 메모리를 더 쓸것 같아서요.
2. @ 는 new abap? 이라고 할까요? 최근 abap syntax 에 쿼리 내에 변수를 사용하는 경우 @ 를 변수명 앞에 붙인다.
라는 것 때문이고, syntax 뿐만 아니라 @ 를 사용한 쿼리는 되도록? sql 내에 필요한 연산을 db 쪽에서 하도록
code push down ( 기존 ap 에서 하던 연산을 db 에서 하도록 함 ) 을 하기 위해서 입니다.
3. 모르는 부분
4. hana studio 에서 쿼리 실행 시 쿼리 plan 보여주는 기능이 있는데,
hana studio 사용 권한이 없으실 수도 있습니다.