ORACLE D/B에서 SAP ABAP 개발을 하다가 갑자기 궁금한게 생겨서 글 남깁니다.
row store 방식의 D/B(ex. 오라클)에서는 인덱스를 사용하여 저장하므로 SELECT SINGLE을 사용시 sequencial 한 결과값을 기대하게 됩니다.
예를 들어 SELECT SINGLE BELNR FROM BKPF WHERE BUKRS = '1000' AND GJAHR = '2017'. 이면 가장 작은 전표번호를 리턴하겠죠.
근데 HANA에서는 column store 방식이라 같은 구문을 사용시 그때그때 다른 값을 리턴할 거라고 예상됩니다.
혹시 HANA에서 가장 오라클과 같이 sequencial한 결과값을 리턴하려면 어떻게 하면 될까요? 아시는 분이 있으시면 댓글 부탁드립니다.
감사합니다.
댓글 3
-
길가메시2
2018.01.25 00:48
-
천태
2018.07.27 01:42
찾고 있던 정보인데, 감사합니다.!^^
-
애불래
2019.06.27 00:03
기존 ROW 방식의 DB도 어떤 인덱스를 access 하냐에 따라 해당 index의 정렬 순서대로 return 합니다. Row 방식의 DB도 항상 Primary key 대로 결과가 정렬된다고 잘못 생각하시는 분들이 계실가봐 리플답니다. 위에 처럼 primary key를 access 하게 WHERE 조건을 주더라도 통계정보가 잘못되어 Full table scan을 한다거나 해서 결과가 primary key로 정렬 안되는 경우도 있습니다.
안녕하세요 아래와 같이 바꿔줘야 합니다.
..........................................................................
DATA: lt_bkpf TYPE TABLE OF bkpf,
ls_bkpf TYPE bkpf.
SELECT belnr
FROM bkpf
INTO CORRESPONDING FIELDS OF TABLE lt_bkpf
UP TO 1 ROWS
WHERE bukrs = '1000'
AND gjahr = '2017'
ORDER BY PRIMARY KEY.
IF sy-subrc = 0.
CLEAR: ls_bkpf.
READ TABLE lt_bkpf INDEX 1 INTO ls_bkpf.
IF sy-subrc = 0.
ENDIF.
ENDIF.