Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-19
제목 Function-based Index와 Descending Index
SCOPE
-----
Standard Edition 에서는 Function-based Index 기능은 10g(10.1.0) 이상 부터 지원이 된다.


Oracle8.1.x(8i)에서 새로 제공되는 index 관련 기능 중 Function-based
Index와 Descending Index에 대하여 알아본다.

1. Function-Based Index
일반적으로, indexing 되어 있는 column이라고 할지라도 이들을
where조건에서 연산하게 된다면 존재하는 index를 사용할 수 없게 된다.
Oracle8.1에서는 where 조건에 자주 사용되는 연산 자체를 이용하여 indexing을
할 수 있도록 함으로써 이를 극복하였다.
function-based index는 bitmap index로도 생성할 수 있다.

function-based index 를 생성하기 위해서는 다음과 같은 system
privilege를 부여해야 한다.
GRANT QUERY REWRITE TO ;

생성방법
CREATE INDEX sales_margin_idx ON sales(revenue - cost) ;

생성된 index를 사용
ALTER SESSION SET QUERY_REWRITE_ENABLED = TRUE ;
SELECT ordid
FROM sales
WHERE (revenue - cost) > 1000 ;
ALTER SESSION SET QUERY_REWRITE_ENABLED = FALSE ;

2. Descending Index

7.x, 8.0에서도 index 생성 시 'DESC'라는 syntax가 제공되었다.
그러나 이는 단순히 DB2와의 index creation systax의 호환성을 위해서
제공되는 것이었으며 따라서 실제로 descending으로 index가 생성되는
것은 아니었다.
8.1에서는 실제로 descending으로 index를 생성해 준다.

생성 예
CREATE INDEX sales_city_margin_idx
ON emp(city_name ASC, revenue DESC) ;
322 보기 태그:
Comment
등록된 코멘트가 없습니다.