본문 바로가기

Story/oracle

검색속도... 작성중

반응형
- 참고 http://database.sarang.net/?inc=read&aid=35146&criteria=oracle&subcrit=&id=&limit=&keyword=&page=
오라클 초보입니다.
CLOB 필드를 가진 데이터가 7만건 정도 있습니다.
초기 개발할때는 몰랐는데 데이터가 7만건이 쌓이니까 CLOB 에서 LIKE 검색을 하니 몇십초가 걸리는겁니다.
그래서 CTX 인덱스를 만들어서 CONTAINS 를 이용하니 2초 정도만에 검색이 되더군요.
그런데...
대소문자를 구별하는것 같습니다.
대소문자를 구별하지 않고 검색하는 방법은 없을까요?
DBMS_LOB.INSTR 을 이용해보니 4초 정도 걸려서 부득이하게 CONTAINS 를 쓸수밖에 없거든요.

그리고...
사실 CONTAINS 사용법도 잘 모릅니다.
게시판 두루 두루 검색해서 겨우 흉내낸것이 contains(필드명, 검색할 단어) > 0 이정도인데...
어떤 분의 게시판에서는 contains(필드명, 검색할 단어, 1) > 0 이렇게 쓰시기도 하더군요.
이건 또 무슨 차이이죠?

- ....
CREATE INDEX test_clob_idx
ON test_clob(notes)
INDEXTYPE IS ctxsys.context;

CREATE INDEX BOARD_CLOB_IDX
ON BOARD(B_CONTENT)
INDEXTYPE IS CTXSYS.CONTEXT;

CREATE INDEX BOARD_CLOB_IDX
ON BOARD(B_TITLE,B_CONTENT)
INDEXTYPE IS CTXSYS.CONTEXT;


CREATE INDEX BOARD_CLOB_IDX
ON BOARD(B_CONTENT)
INDEXTYPE IS ctxsys.context
parameters ('storage storage_pref');
반응형