일단 해당 테이블의 모든 인덱스는 a1과 a2가 들어간 상태로 생성 되어있습니다.
table a 사이즈 2G
원본 쿼리가 쓸데없이 disk 괴롭히고 있어 수정쿼리로 수정해보았습니다.
문제는 뭔가 참신하지도 않고 쓸데없이 쿼리도 길고 이쁘지도 않아서 다른 좋은 방법이 없을지 궁금해서 문의드립니다.
뭔가 쌈빡한 아이디어좀 제공해주세요!
-- 원본 쿼리 : 4곳의 게시판에서 최신 글 4개만을 가져오는 쿼리입니다.
select *
from (
select *
from A
where 1=1
and a_1 = 1
and a_2 in (1,2,3,4)
order by input_dttm desc
)
where 1=1
and rownum <= 5
;
-- 수정 쿼리 : index_desc 힌트를 사용해서 해당 글의 최신글 각각 5개씩을 가져와서 최신글 5개만을 추출
a_input 구성(a_1 asc, a_2 asc, input_Dttm, a_3 asc)
select *
from (
select *
from (
select /*+ index_desc(a a_input) */ *
from A
where a_2 = 1 and a_1 = 1 and rownum <= 5
union all
select /*+ index_desc(a a_input) */ *
from A
where a_2 = 2 and a_1 = 1 and rownum <= 5
union all
select /*+ index_desc(a a_input) */ *
from A
where a_2 = 3 and a_1 = 1 and rownum <= 5
union all
select /*+ index_desc(a a_input) */ *
from A
where a_2 = 4 and a_1 = 1 and rownum <= 5
)
where 1=1
order by input_dttm desc
)
where 1=1
and rownum <= 5
;
아 그리고 오라클 클럽 개편했나요? 오랜만에 들어왔더니 계정이 없어져버렸네요.
ㅡ.ㅜ 질문했던 거와 답변했던 거좀 보려고 했더니 찾을수가 없네요.