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
운영게시판
최근게시물
CUBRID Q&A 1138 게시물 읽기
No. 1138
Q.인덱스, 힌트 사용에 관한 궁금증
작성자
윤희
작성일
2008-06-30 16:40
조회수
4,873

큐브리드 초보사용자입니다.^^

 

인덱스, 힌트 사용에 관해 궁금한것이 있습니다.

 

테스트는 SUBWAY 데이터베이스를 이용하였습니다.

 

기존에 ORACLE을 사용할 경우는 아래와 같이 사용하곤 했습니다.

 

생성된 인덱스의 역방향(index_desc) scan 을 통해 order by 를 사용하지 않고도,

  station_id desc, bus_id desc 순으로  rownum 수 만큼만 가져올수 있도록하는것입니다.

 

예) oracle

 

create index idx_complex on bus (station_id, bus_id)

 

SELECT /*+ index_desc(bus idx_complex) */

        station_id, bus_id

FROM bus

WHERE bus_id between 1001 and 1200

AND station_id between 1010 and 1099

AND rownum <= 10;

 

 

큐브리드에서 위의 SQL과 동일한 성능,결과를 낼수 있도록 인덱스를 설계하여 사용한다면

아래와 같이 reverse 인덱스 생성후, order by 를 포함한 SQL을  만들어야 하는것인가요?

PLAN 을 보면 idx_complex_reverse2 인덱스를 사용하는것으로 나오긴 합니다.

/* ---> skip ORDER BY */ 라는 구문도 보이는데 order by 순서와 일치하는 인덱스가 있을경우 실제 order by 는 일어나지 않는 다는 의미로 저런구문이 보이는것인지...

 

예) cubrid

 

create reverse index idx_complex_reverse2 on bus (station_id, bus_id)

 

SELECT *

FROM   (SELECT  station_id, bus_id

        FROM bus

        WHERE  bus_id between 1001 and 1200

        AND station_id between 1010 and 1099

           ORDER BY station_id desc, bus_id desc

        ) as A

WHERE rownum <= 10;

 

 

큐브리드에서는

전체 데이터를 소팅하지 않고, 인덱스 만으로 원하는 순서대로, 필요 갯수 만큼 결과를 얻기 위해서는 제가 한것처럼 인덱스를 소팅방향에 맞게 만들고, order by 를 사용한후, rownum 을 이용해야 하는것인지.. 아니면 제가 잘못 이해하고 있는것인지..알려주세요~~~

이 글에 대한 댓글이 총 1건 있습니다.

관련하여 기술문서 게시판에 등록된

큐브리드 페이징 기법를 참고하시기 바랍니다.

 

>큐브리드 초보사용자입니다.^^

>

>인덱스, 힌트 사용에 관해 궁금한것이 있습니다.

>

>테스트는 SUBWAY 데이터베이스를 이용하였습니다.

>

>기존에 ORACLE을 사용할 경우는 아래와 같이 사용하곤 했습니다.

>

>생성된 인덱스의 역방향(index_desc) scan 을 통해 order by 를 사용하지 않고도,

>  station_id desc, bus_id desc 순으로  rownum 수 만큼만 가져올수 있도록하는것입니다.

>

>예) oracle

>

>create index idx_complex on bus (station_id, bus_id)

>

>SELECT /*+ index_desc(bus idx_complex) */

>        station_id, bus_id

>FROM bus

>WHERE bus_id between 1001 and 1200

>AND station_id between 1010 and 1099

>AND rownum <= 10;

>

>

>큐브리드에서 위의 SQL과 동일한 성능,결과를 낼수 있도록 인덱스를 설계하여 사용한다면

>아래와 같이 reverse 인덱스 생성후, order by 를 포함한 SQL을  만들어야 하는것인가요?

>PLAN 을 보면 idx_complex_reverse2 인덱스를 사용하는것으로 나오긴 합니다.

>/* ---> skip ORDER BY */ 라는 구문도 보이는데 order by 순서와 일치하는 인덱스가 있을경우 실제 order by 는 일어나지 않는 다는 의미로 저런구문이 보이는것인지...

>

>예) cubrid

>

>create reverse index idx_complex_reverse2 on bus (station_id, bus_id)

>

>SELECT *

>FROM   (SELECT  station_id, bus_id

>         FROM bus

>         WHERE  bus_id between 1001 and 1200

>         AND station_id between 1010 and 1099

>           ORDER BY station_id desc, bus_id desc

>         ) as A

>WHERE rownum <= 10;

>

>

>큐브리드에서는

>전체 데이터를 소팅하지 않고, 인덱스 만으로 원하는 순서대로, 필요 갯수 만큼 결과를 얻기 위해서는 제가 한것처럼 인덱스를 소팅방향에 맞게 만들고, order by 를 사용한후, rownum 을 이용해야 하는것인지.. 아니면 제가 잘못 이해하고 있는것인지..알려주세요~~~

 

손승일님이 2008-06-30 17:40에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1141Q.The CUBRID java stored procedure can not be used [2]
안성민
2008-07-01
4812
1140Q.자료조회 관련 문의입니다. [1]
이경화
2008-07-01
4721
1139Q.cubrid 7.3 upgrade 이후 DB연결 오류 [2]
문화정보센터
2008-07-01
4658
1138Q.인덱스, 힌트 사용에 관한 궁금증 [1]
윤희
2008-06-30
4873
1137Q.INSERT 오류 메시지 질문 [1]
gilbird
2008-06-27
5786
1136Q.메소드 작성방법... 좀 봐주세요... [1]
enoeht
2008-06-25
5101
1135Q.class 삭제시, 오류를 무시하게 하고 싶은데요.... [2]
enoeht
2008-06-24
4544
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2021 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다