항상 고민 되는 부분이
예를 들면
MARA-MATNR MAKT-MAKTX
이런 일반적인 자재코드와 자재 텍스트를 가져올때 프로젝트 할때 주로 많이 사용 되어서,
그때그때 Join이나 따로따로 mara와 makt를 읽지 않고, 이름용 뷰를 따로 만들거나, sap 스탠다드 뷰를 찾아서
사용하곤 했습니다..
mara-matnr makt-maktx marc-werks 이런경우도.. 뷰를 주로 사용 햇구요..
이런 버릇을 들다 보니..쫌 귀찮고 자주 나온다 싶은 쪼인 같은 경우는 (키가 명확할 경우) 그냥 뷰를 만들어서
사용 했습니다..
그런데 이런방법이 혹시 그냥 select mara -> select makt for all ent... -> read makt 이런식의 방법보다 훨씬
퍼포먼스가 떨어지지 않을까 하는 생각이 들어서..
어떤 방법을 더 효율적인가요?
간혹가다.. 등치가 큰 테이블을 읽다 보면.. 뷰가 훨씬 퍼포먼스가 떨어지는걸 느끼거든요..
혹시 이런거 테스트 할수 있는 트랜잭션 코드를 아신다면 알려주세요..
st05에서 테스트 하려니 뭔가 .. 쫌 부족하네요.
댓글 2
-
Jonc
2010.10.04 19:09
-
세인
2010.10.05 14:46
존C님 답변에 더불어 테스트 해보았습니다. 일단 Q뷰는 뺐구요 .. 하아 좋은 방법이라 생각햇었는데.. 일단 코딩 자체를 단순화 .. 하려고 노력을 많이 하다 보니.. 퍼포먼스는 둘째로 생각하게 되버렸네요 ㅠ
1. Join
2. For All Entr..
2. Select Single
3. End Select
4. View
뭐 각.. 테이블 마다 접근 방법 및 인덱스에 따라 틀린 듯 합니다..
각 키값을 알고 있고, 그 키가 여러 가지 일경우.. 키값이 한 100가지 될경우.. 제 경우 앵간해선 다 range에 밀어넣고, in을 쓰거나
For All En.. 을 썼는데.. 의외로.. Select Single이 훨씬 빨랐습니다..
For All Entries in 보다 Join이 빠르구요..
뭐 자세한건 짧은 지식 때문에 .. ㅎㅎ 플랜 사용해서 한번 다시 시도해봐야 겠네요..
일단 View 사용은 피해야 겠네요..
q뷰는 물리적으로 데이터를 가지고 있지않습니다.
해당 뷰 형태의 구조만 가지고 있습니다.
기본적으로 성능을 따지자면,
join , for all entris 가 되겠지요.
하지만 경우에 따라 db , sap buffer에 따라 loop문안에서 select single
더 좋은 성능을 나타낼때도 있습니다.
테스트는 실제로 소스상에서 실행해보는게 제일 좋지 않을까요..
아니면,, 토드나 오렌지등 툴을 사용해서 플랜을 보시던지요.