s e
----
1 3
3 6
7 7
8 12
16 20
28 29
31 37
데이터가 위와 같이 있고 s 는 시작값 e는 종료 값입니다.
s 와 e는 연속은 아니지만 s와 e 사이가 중복은 전혀 없습니다.
여기서 어떤 값이 s와 e 사이에 있는지 없는지 체크 하는 로직인데
위 예제에서 9 를 입력하면
8 12 의 값이 나오게 하는 쿼리네요..
쿼리로는
select * from test_tab where s < 9 and e > 9
이렇게 될텐데..성능이 너무나 느립니다.
쿼리로 한번에 될지요...
s 나 e 에는 인덱스가 있다고 가정하고
index_desc 와 rownum=1 로 데이터를 찾는 방법도 잇긴 하던데 로직이 불안해서 입니다.
sql 쿼리 개념적으로 위 결과를 만족하는 데이터를 효율적으로 찾을수 있을지 질문드립니다 |