Oracle은 Index를 만들면 Default로 오름차순으로 정렬이 됩니다.
이를 변경하려면 desc를 사용하면 되겠지요.
create index emp_index(empno asc, ename desc, dept desc)
이런 식으로 만들면 되겠지요.
여기서 생략할 수 있는건 asc이겠지요. Default라고 했으니까요.
그리고 복합인덱스 구조에서는 첫번째 index column이 Where절에 반드시 있어야만 Index Scan을 합니다. 물론 세게의 Column을 다 Where조건에 지정하셨다면 엄청 빠르게 조회가 이루어 지겠지요.
그리고 Index가 여러개인 경우 반드시 지정한 것을 타게 하려면 Hint를 사용하면 되겠지요.
다음과 같이 말입니다.
select /*+ index(emp index_emp) */ empno, ename, job from emp
Order By가 Index구조와 같다면 지정할 필요가 없구요.
Index구조와 틀리다면 Index Key의 순서와 비슷하게 따르는게 속도가 빠릅니다.
이것은 Auto Trace를 떠서 확인을 해보시는게 좋을듯 싶네요.
SQL에서 Auto Trace를 뜨는 방법은 제 Homepage Oracle Tip 3번에 있습니다.
추가로 정보를 원하시면 www.freechal.com/sllim으로 한번 방문을 하셔서
참고를 하세요.
>>windman 님께서 쓰시길<<
:: 안녕하세요? 한가지 질문을 하려 합니다.
::
:: 제가 이번에 답변형 게시판(오라클 8i)을 만드는데 쿼리문에서 전체 자료를 불러 오는데 있어서 인덱
:: 스를 이용하려고 합니다.
:: 데이타를 불러오는 데 있어서 세 개의 컬럼을 한개는 오름차순, 나머지는 내림차순으로 정리해야 하거
:: 든요....
:: 이걸 인덱스로 처리하여 한꺼번에 할 수는 없나요?
:: 그리고 그 인덱스를 가져다 이용하는 예도 좀 부탁드려요....
:: 제가 초보라서요......
:: 글구 이렇게 인덱스를 사용하면 order by를 여러 개 걸어주는 경우보다 효율이 낮다고 하던데 정말 그
:: 런지도 부탁드립니다.
::
:: 그럼 좋은 하루 되세요.......
|