mDt||mSeq <= '20190709'||1 --> 잘못된 조회 조건입니다.
'20190708'||2 --> 이렇게 조회하면 2차 이전 값이 나와야 하는데 20190708 10차가 나오게 됩니다.
최대차수를 5자리라 보고..
mdt||lpad(mseq,5,'0') <'20190708'||lpad(to_char(2),5,'0') 이게 맞겠고요.
하지만 이렇게 사용하게 되면 mdt나 mseq에 인덱스를 활용 못 하게 됩니다.(컬럼을 가공했으므로..)
mdt에 인덱스가 있고 전체 데이터 중 한정적인 데이터만 조회하는 경우라면(위에 처럼 rownum < 11 조건이 있다든지..)
mdt <= '20190708'
and ((mdt = '20190708' and mseq < 2) or mdt != '20190708')
이게 나을 거 같고요.
조회하는 량이 데이터 전체량의 대부분을 차지한다면
위의 concat.. full scan 방법도 나쁘지 않습니다.