쿼리 속도 개선 방법 문의(시간순으로 저장되는 테이블에서 select 속도 개선 방법) 0 3 960

by 아리수 [Oracle Tuning] [2019.10.16 16:02:32]


안녕하세요. 

현재 테이블에 시간 순(1초 간격) 데이터가 계속해서 저장(INSERT)되고 있습니다. 

테이블은 간략하게

create table tab_seq
(
    ins_dtime date default sysdate not null,
    tab_idx    NUMBER
    tab_col1   number(10)
);

입니다.

 

이 테이블에서 가장 마지막에 INSERT된 정보를 가져오려고 합니다. 
데이터가 많이 있으면 Select 속도가 늦어지는데 

어떤 식으로 쿼리를 생성해야 할까요?


저는 

select * from ( select * from tab_seq order by ins_dtime desc)
where rownum = 1;

식으로 했는데... 

 

by 마농 [2019.10.16 16:08:23]

테이블에 PK 나 인덱스가 없나요?
빠른 검색은 인덱스 생성하면 되는 부분입니다.


by 아리수 [2019.10.16 16:20:46]

답변 감사합니다. 

인덱스, PK를  INS_TIME, TAB_IDX로 주면 될까요? 

CREATE Unique INDEX idx_tab_seq on tab_seq(ins_dtime, tab_seq) ;

select 쿼리는 

select /*+ index_desc( IDX_Tab_seq Tab_seq)*/ * from tab_seq; 

이렇게 했습니다. 

맞게 쓰는 건가요?


by 마농 [2019.10.16 16:30:11]

인덱스만 잘 설정되어 있다면?
굳이 힌트 안주더라도 기존 질문의 쿼리만으로도 동일한 효과를 얻을 수 있습니다.
PK 설정 및 자동증가 컬럼의 경우 그 필요성에 대한 검토가 필요해 보입니다.
다음 질문글에 관련 댓글 달았습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입