안녕하세요... 눈팅만 하다가 도움이나 조언을 얻고자 이렇게 글을 올려봅니다..
오라클에 대한 많은 경험이 있는것도 아니고 INDEX 에 대한 개념이 잡혀있지도 않은 상태인것 같습니다.
테이블이 두개 존재 합니다.
A 테이블에는 IDX 값을 PK 로 가지고 있는 120 만건의 테이블이 있습니다.
B 테이블에는 A.PK 를 FK 로 잡고 있는 2억건의 데이타를 가지고 있습니다.
여기서 제가 보여주고 싶은 부분은 B 테이블에서 FK 가 같은 묶음을 보여주고 싶은 부분인데요..
B 테이블에 날짜 필드가 있는데 (insert 시 순차가 아닌 중구난방으로 들어옵니다) 날짜 순으로 보여주고 싶습니다.
대용량 페이징 쿼리시 INDEX 를 제대로 걸면 ORDER BY 없이 ROWNUM 으로 보여줄수 있는 부분을 찾아서
적용시켜 보려고 하였는데.. (FK 에만 INDEX 생성후 SELECT 한후에 ORDER BY 를 하면 시간이 오래 걸리더군요)
제 생각에는 FK 와 날짜 테이블에 INDEX 를 걸면 제가 생각한대로 나올줄 알았는데 그건 아니더군요..
CREATE INDEX INDEX_NAME ON B 테이블 (B.FK, 날짜 DESC)
이런식으로 만든후에
SELECT * FROM B테이블 WHERE B.FK = 1111 AND ROWNUM <= 10;
이라고 하면 결과는 빨리 나오는데 날짜순으로 정렬이 되진 않더군요..
이런 경우에는 어떤식으로 인덱스를 줘야 할지 조언좀 부탁드리겠습니다...
오라클 버전은 10g 입니다.