database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40483 게시물 읽기
No. 40483
분석함수 lead 사용쿼리 문의
작성자
디비사랑
작성일
2014-06-03 13:12ⓒ
2014-06-03 13:19ⓜ
조회수
7,391

다음행을 가져오는 분석함수 lead 사용시 full scan을 방지하는 방법이 있는지 궁금합니다.

예를들어 tab1테이블에 기준컬럼의 어떤 값을 찾으면 쌍으로 다음행 값을 접근하려고 하는데 tab1의 데이터가 많을때 속도가 매우 안좋네요.
현재 원시테이블전체에서 먼저 다음행 구한후 감싸서 아래 쿼리와같이 사용하는데 개선방안이 있는지 여쭤보고싶습니다..
select a, time, next_a, next_time
From
(
   Select a, time, lead(a) over(order by num) as next_a,
lead(time) over(order by num) as next_time
   From tab1
)
Where a=1
 
이 글에 대한 댓글이 총 4건 있습니다.

-- 1. a 인덱스 스캔하여 num 가져오기
-- 2. num 인덱스 스캔하여 가져온 num 보다 큰 next_num 한건만 읽고 Stop
-- 3. next_num 을 이용하여 다시 조인
SELECT a.a
     , a.time
     , b.a    AS next_a
     , b.time AS next_time
  FROM (SELECT /*+ INDEX(a idx_a) */
               a, time, num
             , (SELECT /*+ INDEX(tab1 idx_num) */
                       num
                  FROM tab1
                 WHERE num > a.num
                   AND ROWNUM = 1
                ) next_num
          FROM tab1 a
         WHERE a = 1
        ) a
     , tab1 b
 WHERE a.next_num = b.num(+)
;

마농(manon94)님이 2014-06-03 14:51에 작성한 댓글입니다.
이 댓글은 2014-06-03 18:48에 마지막으로 수정되었습니다.

 지식이 짧아서 좀더 쉽게 설명을 해주시면 안될까요..^^

인덱스 구성에 제약이 있다면 힌트구문대신 각각 정렬컬럼, 비교값컬럼의 order by 절로 대체하면 될까요?..
디비사랑님이 2014-06-03 18:09에 작성한 댓글입니다. Edit

인덱스가 없다면 풀스캔은 당연한 거죠.

인덱스 없이 풀스캔 아닌 다른걸 기대한다는건 말이 안됩니다.

마농(manon94)님이 2014-06-03 18:29에 작성한 댓글입니다.

 귀한의견 주셔서 감사합니다.

디비사랑님이 2014-06-03 18:44에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40487합계내는거질문이요ㅠ [1]
ㅇㅇㅇ
2014-06-10
6746
40485분산 DB 관련해서 질문드립니다.
김세호
2014-06-05
6864
40484CONNECT_BY 쿼리문 질문드려요 [2]
정창혁
2014-06-05
9468
40483분석함수 lead 사용쿼리 문의 [4]
디비사랑
2014-06-03
7391
40482mview log에 생성되는 데이터를 mview에 한해 제한할 수 있는지요.
이차승
2014-06-02
6732
40481https://localhost:1158/em 이 안됩니다.
김성환
2014-05-30
8528
40480고난이도 쿼리 질문2 [2]
디비사랑
2014-05-30
6980
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다