파티셔닝 테이블에서 index_desc 와 2 개의 inline 절을 사용하여 쿼리한 결과에 대해서 문의 드립니다.
아래에서 보시면 t_event 는 1~12월까지 month 로 나누어진 partitioning 테이블이입니다.
--------------------------------------------------------------------------------------
select /*+index_desc( t_event i_event_alarmtime)*/
rownum rnum, seq_no
from t_event
where ((user_id in (select user_id from t_user where user_no = 1163))
and user_id not in (select user_id from t_deleted_user where status = 1 ) )
and alarm_time between to_date('2013-03-27 00:00:00','yyyy-mm-dd hh24:mi:ss')
and to_date('2013-04-01 23:59:59','yyyy-mm-dd hh24:mi:ss')
-----------------------------------------------------------------------------------------
A 사이트 : 4월 1일 치 이벤트 부터 순서대로 나옵니다. desc 이므로.
B 사이트: 3월 27일 치 이벤트 부터 나옵니다. asc 순서 --> 잘못된 결과이고 간헐적으로 asc 로 결과가 나옴 ㅜ,ㅜ
위의 sql 문에서 파란색 부분을 다음 처럼 하면 B 사이트에서도 문제는 없습니다.
and user_id not in (122, 4344 )
1)두번째 inline 절이 들어가면서 inline 절이 처리대는 순서에 따라 옵티마이저가 index_desc 를 사용할수도, 안할수도 있는건가요?
2) 그렇다면, 힌트에 ordered 를 추가하면 될까요 ?
어떤 연관이 있는지 고수님들께서 의견 좀 주세요
필요하면 실행계획도 올리겠습니다 ^^
꾸벅
|