SELECT * INTO CORRESPONDING FIELDS OF TABLE INT_Z02
FROM Z02
WHERE APPYEAR eq '2010'
and appno eq '0000000064'.
어제까지 결과
A B C D
100 |2010 |0000000064|001 |000 |320900348|
100 |2010 |0000000064|001 |001 |119710392|
100 |2010 |0000000064|002 |000 |120200637|
ABCD가 자동 SORT되서 INT_Z02에 담겼으나
오늘 아침부터
100 |2010 |0000000064|001 |001 |119710392|
100 |2010 |0000000064|001 |000 |320900348|
100 |2010 |0000000064|002 |000 |120200637|
ABCD가 자동 SORT되지 않고 INT_Z02에 담깁니다.
BC쪽이나 ABAP쪽에는 작업한게 없는데요..갑자기 왜 그런지 ...
혹시 봐야할 곳을 아시는지요.. 감사합니다.
*full scan하던 넘이 엄한 index를 탑니다. 왜 이런 경우가 발생 하는지요..
결국 엄한 index를 지워서 해결은 됐지만 평소엔 fullscan하던게 갑자기 index를 타는이유가 궁금해 지네요..
SAP 설치한 DB가 오라클이라는 가정하에서 애기하자면, 오라클의 Optimizer 방식은 CBO입니다. Cost Based Optimizer이죠.
ABAP Query를 DB Dependent한 Native Query를 전환 후, excute plan를 결정시 CBO 방식으로, 즉 기 생성된 통계정보값에
의해 실행계획을 설정한다는 애기입니다.
처음에 풀스캔하던것이 어느날 부터 인덱스를 타기 시작했다는 건, 아마도 초기 테이블 생성 혹은 인덱스 생성후 통계정보값이 생성되어
있지 않아, excute plan을 세울때, 참조할 통계정보값이 없어 Full scan을 하다가 , 통계정보가 생성된 후부터는 인지를 해서 인덱스를 타도록 excute plan을 세우게 되어 인덱스를 타게 되는 것일겁니다.
통계정보는 1)BC측에서 통계정보 생성 스케쥴을 걸어주거나 2) 직접 통계정보 생성 리포트를 수행해서 생성해 줄수있습니다.
BC이나 ABAP쪽에서 아무 작업을 하지 않는 다고 한다면, 아마도 BC측에서 작업스케쥴을 걸어둔 것이 시점이 되어 작업을 수행했을거고
위의 질문처럼^^ 물어본다면 특별히 작업한게 없다고 했을듯 싶네요.
그리고, 오라클 optimizer가 CBO방식임으로 RBO(Rule based Optimizer)와 달리 여러가지 상황에 따라 실행계획이 바뀔수있으므로
데이터를 가져와 담기는 순서가 매번 같다고는 할수없으니 인터널 테이블에 담아온 후, Sort문으로 정렬을 반드시 해주야 합니다.
수고하시고 좋은 하루 보내세요,참고로 통계정보생성은 SE38에서 RSANAORA 실행시켜서 테이블명 혹은 인덱스명 넣고 실행하시면 됩니다