검색속도2 0 1 1,162

by 커피향 [2014.08.05 15:52:26]


아래 검색시간 1초 미만  (2000행 정도 검색)----------

SELECT B.YMDSEQ, B.YMD
, NVL(LENGTH(
REGEXP_REPLACE(
REGEXP_REPLACE(
REPLACE(
wm_concat(NVL(A.HVAL,0)) OVER(ORDER BY B.YMDSEQ DESC, B.SEQ DESC
ROWS BETWEEN CURRENT ROW AND 47 FOLLOWING)
, ',')
, '0{6,}', 2)
, '[^2]')
), 0) REST6
FROM CREW_RT10 A,
CREW_RT04 B
WHERE B.VESSEL = A.VESSEL(+)
AND B.YMDSEQ = A.YMDSEQ(+)
AND B.SEQ = A.SEQ(+)
AND B.VESSEL = '0001'
AND A.CREW(+) = '100002'

 

아래 검색시간 2초 -----------

SELECT YMDSEQ, REST6
FROM (
SELECT B.YMDSEQ, B.YMD
, NVL(LENGTH(
REGEXP_REPLACE(
REGEXP_REPLACE(
REPLACE(
wm_concat(NVL(A.HVAL,0)) OVER(ORDER BY B.YMDSEQ DESC, B.SEQ DESC
ROWS BETWEEN CURRENT ROW AND 47 FOLLOWING)
, ',')
, '0{6,}', 2)
, '[^2]')
), 0) REST6
FROM CREW_RT10 A,
CREW_RT04 B
WHERE B.VESSEL = A.VESSEL(+)
AND B.YMDSEQ = A.YMDSEQ(+)
AND B.SEQ = A.SEQ(+)
AND B.VESSEL = '0001'
AND A.CREW(+) = '100002'
) S
ORDER BY 1

 

아래 검색시간 4초 -----------

SELECT YMDSEQ, min(REST6)
FROM (
SELECT B.YMDSEQ, B.YMD
, NVL(LENGTH(
REGEXP_REPLACE(
REGEXP_REPLACE(
REPLACE(
wm_concat(NVL(A.HVAL,0)) OVER(ORDER BY B.YMDSEQ DESC, B.SEQ DESC
ROWS BETWEEN CURRENT ROW AND 47 FOLLOWING)
, ',')
, '0{6,}', 2)
, '[^2]')
), 0) REST6
FROM CREW_RT10 A,
CREW_RT04 B
WHERE B.VESSEL = A.VESSEL(+)
AND B.YMDSEQ = A.YMDSEQ(+)
AND B.SEQ = A.SEQ(+)
AND B.VESSEL = '0001'
AND A.CREW(+) = '100002'
) S

group by ymdseq
ORDER BY 1

 

테이블를 감싸고 group by 하니깐 상당히 검색속도가 느린데요

s 테이블 안에서 바로 group by 하는 방법이 있을까요

답변부탁드립니다.

by 마농 [2014.08.05 16:35:13]

- 테이블, 인덱스, 데이터에 대한 설명을 더 해 주세요.

- 두 테이블 관계는? 1:1 이겟죠?

- Group By 결과는 몇건?

- 기존 질문엔 날짜 조건이 있었던것 같은데? 없네요.

- 실행계획 확인은 가능하신지?

- 각 항목들은 어떤 의미를 가지며 어떤 관계에 있는지?

- MIN(rest6) 를 하는 이유는? 원하는게 뭔지에 대한 설명을?

- 기타등등

 

- 새로운 질문 할때는 처음부터 설명을 상세히 해주세요.

- 기존 질문을 베이스로 깔고 질문하지 마시구요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입