오라클 clob 카운트 속도내는법 1 3 2,788

by 지구촌아이 [Oracle Tuning] [2017.11.17 11:43:44]


먼저 수행하려는 쿼리는 

20만건정도의 게시글의 카운트입니다.

IDX_BOARD01인덱스는 TITLE에 걸어두고

IDX_BOARD02는 CREATE INDEX IDX_BOARD02 ON BOARD(CONTS) INDEXTYPE IS CTXSYS.CONTEXT;

이렇게 생성해 두었습니다.

        SELECT /*+ INDEX_ASC(a, IDX_BOARD01) */
        count(1)
        FROM BOARD a
        WHERE  
            INSTR(TITLE, '공지') > 0 OR CONTAINS(CONTS, '공지') > 0

이렇게 수행하면 4초나 걸립니다.

어떤식으로 하면 속도가 제대로 나올까요?

조건을  INSTR(TITLE, '공지') > 0 나 CONTAINS(CONTS, '공지') > 0 하나만 주었을경우는 빠릅니다

by jkson [2017.11.17 15:45:28]

컬럼에 함수를 사용하면 애초에 인덱스 활용이 안 됩니다만..


by jkson [2017.11.18 13:33:14]

INDEXTYPE IS CTXSYS.CONTEXT 가 fulltext 탐색용 인덱스인가보네요?

좋은 것 알았네요. 그렇다면 union all로 각각 인덱스 활용 되도록 해주세요.


by 마농 [2017.11.23 19:33:43]
SELECT COUNT(*) cnt
  FROM (SELECT ROWID rid
          FROM board a
         WHERE INSTR(title, '공지') > 0
         UNION
        SELECT ROWID rid
          FROM board a
         WHERE CONTAINS(conts, '공지') > 0
        )
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입