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 23838 게시물 읽기
No. 23838
오라클에서 100만건 페이징 질문 입니다.
작성자
BirdShim
작성일
2005-08-26 15:06
조회수
1,962

t_board 라는 테이블에

create index t_board_idx on t_board(orders DESC, sub);
라고 인덱스를 주었습니다.

 

일단 orders 를 DESC로 한 이유는 저장시 속도는 훨씬 느리지만..

인덱스 힌트를 줄때 index_asc 보다 index_desc 가 약. 3~4초 정도 느리더군요....

 

위와 같은 상태에서 페이징을 했는데요..

 

 

SELECT
rnum,
idx, b_idx, cate, orders, sub, subject
FROM (
SELECT
/*+index(t_board t_board_idx)*/
ROWNUM as rnum,
idx, b_idx, cate, orders, sub, subject
FROM
t_board
WHERE orders >0
)
WHERE
rnum BETWEEN 1 AND 10

 

 

백만건 조금 더 넘게 들어가 있는데요.

테스트 해 본 결과 한 6초 정도가 걸리는 군요....

 

원래 5초 정도 걸리는게 정상인지?.

인덱스를 잘못 걸었거나?.

쿼리를 잘못 생성한 것인지 궁금합니다..

 

예전에 rownum을 이용하는 것은 전체 글을 전부 소팅 한 후에

글을 자르는 형식이기 때문에 느리다는 얘기를 들었던 것 같은데요..

어떻게 다르게 하는 방법이 또 있나요?.

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

인라인뷰 안에 stop key를 추가해 보시죠.

그리고 실행 계획을 올려주시면 답변에 도움이 될것 같습니다.

그리고 조건에 orders > 0으로 주셨으니 당연히

orders의 컬럼타입은 number일것 같구요.

인덱스에도 특별한 문제는 없어 보입니다.

 

SELECT
rnum, idx, b_idx, cate, orders, sub, subject
FROM (
SELECT
/*+index(t_board t_board_idx)*/
ROWNUM as rnum,
idx, b_idx, cate, orders, sub, subject
FROM
t_board
WHERE orders >0

and rownum <= 10      ---> 추가
)
WHERE rnum BETWEEN 1 AND 10

박문수님이 2005-08-26 17:45에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
23842쿼리 질문입니다.. 날짜문제 [2]
버기
2005-08-26
1402
23841EXEC SQL EXECUTE 사용시 에러
강진우
2005-08-26
1519
23840replication 포기 T.T [4]
유진범
2005-08-26
3384
23838오라클에서 100만건 페이징 질문 입니다. [1]
BirdShim
2005-08-26
1962
23837데이터 베이스를 생성하려고 합니다 [1]
에리얼
2005-08-26
954
23836안녕하세요 자동계산 필드같은거 없나요..?? [2]
몰라
2005-08-26
1102
23835number(21) data type관련 [1]
이대군
2005-08-26
1450
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다