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 716 게시물 읽기
No. 716
Q.Index 질문
작성자
유영철
작성일
2007-11-19 17:43
조회수
3,590

varchar 컬럼으로 Index를 잡았는데 인젝스를 타지 않습니다.

 

inteer형식만 Index를 사용할수 있는지....

 

그리고 쿼리의 플랜은 어떻게 볼수 있는지...

 

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

첨부하신 플랜을 봐서는 인덱스 스캔은 되는 것으로 보입니다.

\"인덱스를 안탄다\"고 표현하신 것이 결과 튜플이 인덱스 키 순으로 정렬되지 않는다는 점을 말씀하신 것 같습니다.

큐브리드는 인덱스 스캔에서 얻어낸 튜플들을 접근할 때 locality of reference를 최대한 높이기 위해서 키 순서가 아니라 OID 순서로 정렬하여 접근합니다. 이에 따라서 결과가 키 순서로 정렬되지 않은 상태로 출력될 수 있습니다.

질의에 ordering 조건을 부여하면 질의 최적화기가 알아서 실제 order by 처리 없이 원하시는 데로 키 순서로 정렬된 결과를 생성합니다.

 

위 질의 기준으로 생각하면,

 

select * from cls_pam_gr_otcode

where artist_idx < 10000  and rownum between 1 and 10

order by artist_idx desc;

 

이와 같이 질의를 하시면 됩니다. 질의 최적화기가 인덱스 스캔 결과를 키 순서로 액세스하여 order by 절 처리를 무시하는 것이 효율적이라고 생각되면, order by 절 처리 없이 수행할 것입니다. 이 예에서는 reverse index가 사용되므로 descending 순으로 정렬했을 때 order by 절 처리가 무시될 수 있습니다. normal index의 경우에는 반대로 ascending 순일 때 이와 같이 최적화됩니다.

 

order by 절 없이 항상 키 순서로 인덱스 스캔 결과를 얻으려면, $CUBRID/admin/sqlx.init의 index_scan_order 파라미터를 1로 변경하시면 됩니다.

 

 

>Index를 안탑니다.

>

>Create Reverse Index i_cls_pam_gr_otcode_artist_idx on cls_pam_gr_otcode(artist_idx);

>

>

>

>select * from cls_pam_gr_otcode

>where artist_idx < 10000  and rownum between 1 and 10 using index i_cls_pam_gr_otcode_artist_idx(+)

>

>이러면 인덱스를 타서

>999

>998

>997

>....

>

>이런 형식으로 나와 하는데

>자기 멋대로 나오는 이유는 뭔지..

>

>Query plan:

>

>iscan

>    class: cls_pam_gr_otcode node[0]

>    index: i_cls_pam_gr_otcode_artist_idx term[1]

>    sargs: term[0]

>    cost:  fixed 0(0.0/0.0) var 0(0.0/0.0) card 27

>

>

>자료는 만건이 넘습니다.

 

오이석님이 2007-11-19 18:43에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
719Q.안녕하세요~ [1]
송홍주
2007-11-21
3673
718Q.cannot 메시지 차이점 질문 [1]
강민석
2007-11-20
4424
717Q.메니져에서 예제에 있는 테이블 조회시 한글이 깨짐 [1]
박경호
2007-11-20
3428
716Q.Index 질문 [1]
유영철
2007-11-19
3590
714Q.응용프로그램 배포시 odbc 드라이버를 어떻게 배포해야 하죠? [1]
김대웅
2007-11-19
3543
713Q.컨넥션풀에러:AbandonedObjectPool is used [1]
김남진
2007-11-18
5268
712Q.마스터 서버 문의 입니다.. [1]
김남우
2007-11-17
3510
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다