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 23980 게시물 읽기
No. 23980
힌트 질문입니다.
작성자
...
작성일
2005-09-07 02:36ⓒ
2005-09-07 02:54ⓜ
조회수
1,684

SELECT

rn,

col1,

col2,

col3

 

FROM

(SELECT

/* INDEX_DESC (TA TA_pk) */

col1,

col2,

col3

rownum AS rn

FROM

tableA TA

LEFT JOIN

tableB TB

ON

TA.col2 = TB.col3 ;

)

WHERE

rn > 10 AND rn <= 20;

 

위와 같은 질의입니다. col1 은 tableA 의 PK 입니다. col1 의 역순으로 정렬하는 힌트를 주려는 건데

인덱스 힌트가 먹다가 안먹다가 합니다.

이유를 모르겠습니다. 혹시 LEFT JOIN 때문일까요? 아니면 다른 문제가 있을지요

 

 

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

힌트 사용시의 문법이 틀렸네요. + 를 추가하셔야 합니다.

 

/*+ INDEX_DESC (TA TA_pk) */

아마도(amado)님이 2005-09-07 10:50에 작성한 댓글입니다.

게시판에 옮겨 적으면서 실수했습니다. /*+ 로 되어있습니다. 계속 테스트하면서 발견한 것은 tableA 에 데이터가 적을 경우 에는 힌트가 안먹다가 많아지면 힌트가 먹는 다는 겁니다. 대충 400~500 row 정도 사이에서 갑자기 힌트가 먹기 시작합니다. 이유를 알 수 없군요..

...님이 2005-09-07 11:56에 작성한 댓글입니다. Edit

 

이럴 경우에는 힌트를 보다 상세하게 주어야 합니다.

/*+ ordered index_desc ( t1 t1_ind2) */ 또는 /*+ leading(t1) index_desc ( t1 t1_ind2) */ 으로 할 수 있겠죠.

 

또는 더욱 상세하게 조인 방법까지 알려줄 필요가 있을 수도 있습니다.

/*+ leading(t1) use_nl(t1 t2) index_desc ( t1 t1_ind2) */

 

결론을 내리자면, 옵티마이저에게 모든 access path를 알려주면 그대로 따라한다는 것입니다.

아마도(amado)님이 2005-09-07 13:14에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
23983Character set, DB link 어떤 문제인지? [8]
핸시기
2005-09-07
14391
23982dblink 질문 [2]
이인호
2005-09-07
2944
23981정렬을 위해 힌트를 사용하는 게 괜찮은가요? [1]
음..
2005-09-07
2249
23980힌트 질문입니다. [3]
...
2005-09-07
1684
23979쿼리 질문 좀..ㅠㅠ [1]
오라클초보
2005-09-06
669
23978리두로그파일 잘못 생성...TT [3]
이영주
2005-09-06
2891
23976트리거 질문입니다 -무플은 괴로워요~ [7]
초보
2005-09-06
3010
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다