CLOB 타입 컬럼의 한글데이타 검색문제 0 2 5,162

by 버츠 [SQL Query] CLOB 한글 데이타 검색 [2013.08.16 13:15:04]


안녕하세요.

궁금한사항이 있어서 질문을 올립니다.

33만건이 등록되어있는 테이블이 있는데 그 안에 CLOB으로 되어있는 본문 컬럼이 있습니다.

해당 컬럼은 영어,한글, HTML 테그로도 등록 될수 있게 되어있습니다.

이상황에서 한글이 한글자라도 포함된 데이터를 제외하고 새로운 뷰 테이블을 생성해야 하는데요.

그래서 한글이 제외된 데이터만 검색하기 위해서 다음과 같이 쿼리를 짰는데요.

SELECT *
   FROM TEST_PROD
 WHERE NOT REGEXP_LIKE(DESCRIPTION, '^[가-힝]')
   AND USE_YN = 'Y';

그런데 이 쿼리가 수행시간이 어마어마하게 걸린다는 겁니다. (2시간까지 돌리다가 락걸릴까봐 캔슬 했습니다.)

그래서 오라클 텍스트라는걸 찾았는데요.

http://www.dbguide.net/dbqna.db?cmd=view&boardUid=138234&boardConfigUid=30&boardStep=0&categoryUid=205&boardIdx=9180

위와 같이 링크에서 보고 이걸 적용하면 되겠다 싶어서 적용할려고 하는 찰나

CTXSYS 라는 계정이 현 오라클에는 없는겁니다. 이 계정을 생성해서 써도 다른 시스템에 영향을 주거나 하는 건 없는건지 모르겠습니다.

글이 두서 없어서 질문만 요약하면

1. CLOB 컬럼안에 한글데이타를 빼고 검색하는 쿼리 작성중 수행시간이 너무 오래걸림.
    수행시간 줄이는 좋은 방법이 혹시 없는건지요. (혹은 제가 잘못 짰을 수도 있으니 좋은 방법좀 알려주십시요.)

2. 현 ORACLE 에 ORACLE TEXT 라는걸 사용하기 위한 CTXSYS 계정이 없는데 이 계정을 새로 생성해도 다른 시스템에는
    별 영향이 없는지 궁금합니다.

3. ORACLE TEXT 라는걸 사용하여 실제로 효과가 어느정도 되는지도 궁금합니다.


읽어 주셔서 감사합니다.


by 마농 [2013.08.16 13:52:49]

꺽쇠(^) 는 왜 붙이셨는지?
정확하게 한글만 뽑는거는 아니지만 얼추 비슷하게 맞는다고 가정하고...
'^[가-힝]' 은 한글로 시작하는걸 뽑는거구요
^ 를 빼면 '[가-힝]' 은 한글이 포함된걸 뽑는거지요.
포함여부라면 ^ 를 빼는게 맞을 듯 싶구요...
시작여부라면 Substr 으로 한글자만 잘라서 Between '가' AND '힝' 이 나을 듯


이게 그렇게나 오래 걸리는지는... 안 해봐서 모르겠네요...
일단 SELECT * 부분을 SELECT 1 또는 SELECT COUNT(*) 로 바꿔보세요.


실제 온라인 검색조건으로 사용하기 위해 오라클 텍스트를 사용한다면 모를까?
단순 일회성 작업을 위해 그걸 사용할 필요가 있을지 의문이네요.


by 버츠 [2013.08.16 15:52:56]
답변 감사합니다.

제가 복사 붙여 넣기 하다가 잘못 붙여넣기를 한것 같습니다.

^ 부분 없이 검색 했습니다. 그리고 한글로 시작한걸 뽑는건 아니었습니다.

한글이 포함되지 않은 결과를 뽑는거였습니다. 그래서 앞에 NOT을 썼죠. ㅠ

그리고 단순 일회성 작업은 맞습니다.

뷰 생성할때 쓸려고 하는 쿼리인데 단순 수행 결과가 엄청 오래걸려서

좋은 방법이 없을까 하는 마음에 질문 올려본겁니다.

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