select *
from A
where b in c.
라는 문장이 있을 때
c라는 range변수에
I EQ 23
I EQ 23
I EQ 23
I EQ 23
I EQ 31
I EQ 31
I EQ 31
I EQ 31
와 같은 중복된 값이 있는데 이경우에 성능저하가 일어날
가능성이 있는지 알고 싶습니다.
고수님들 부탁드려요~~
댓글 3
-
행보관
2011.02.15 22:14
아.. 테이블이 여러개 조인되어있을 경우에는 어떤지도 궁금합니다 ^^ -
양키
2011.02.16 18:50
네 성능저하가 일어납니다. RANGE변수는 값이 2개이상인경우 WHERE 조건에 IN조건으로 들어가기때문에
중복데이타가 많아지면 많아질수록 시스템의 부하가 일어나게 됩니다.
아래는 간단한 예제를 만들었으니 테스트해보세요.
==============================================================
REPORT Z_RANGE_VARIABLE_TEST.
RANGES: ra_b FOR mara-matnr.
DATA: it_mara LIKE TABLE OF mara
WITH HEADER LINE.
DO 1000 TIMES.
ra_b-low = '000000000200002081'.
ra_b-sign = 'I'.
ra_b-option = 'EQ'.
APPEND ra_b.
ENDDO.
*DELETE ADJACENT DUPLICATES FROM ra_b.
select *
into corresponding fields of table it_mara
from mara
where matnr in ra_b. -
행보관
2011.02.16 22:30
감사합니다 ^^