대용량 테이블에서 특정 설명 컬럼에서 값을 조회할 때 사용되는 index다.
create index 인덱
스명 on 테이블명(컬럼명) indextype is ctxsys.context;
위와 같은 식으로 text 인덱스를 사용한다.
데이터 건수가 엄청 많은 테이블에서 text 내용을 검색할 때 유리하다.
총 3400만건의 데이터에서 Dox라는 검색어로 조회를 하니
19초 가량이 걸렸다.
contains 함수를 이용하여, Dox 검색어를 조회하니. 0.7초의 조회 결과가 나온다.
생각보다 괜찮은 것 같다.
결과값이 달라서 확인해보니, contains 함수는 대소문자 구분없이 검색을 하는 듯 하다.
위에 쿼리에 upper 함수를 사용해서 조회를 해보니 245760이 나왔는데.
시간은 36초 걸렸다.
단 요즘에, 18c 오라클에서 같은 트랜잭션 내에서 서로 다른 DB 업데이트를 하는 경우가 있을 때
text index가 설정된 곳에서 분산트랜잭션 오류가 발생하는 경우가 많이 있다.
DBA에게 문의도 해보고 하지만 아직 확실한 결과를 얻지 못했다.
대용량 텍스트 검색에서 사용하면 유용할 듯 싶다.
'DB' 카테고리의 다른 글
오라클 instr, substr을 이용한 특정문자열 자르기. (0) | 2020.05.21 |
---|---|
오라클 merge (0) | 2020.05.21 |
두 날짜 시간의 차 구하기.. (0) | 2013.07.30 |
오라클 Outer 조인시 주의점. (0) | 2013.07.09 |