DB2020. 5. 21. 17:27

대용량 테이블에서 특정 설명 컬럼에서 값을 조회할 때 사용되는 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
Posted by 달려라곰간지
DB2020. 5. 21. 10:56

일을 하다보니. 특정 항목이 varchar형이라, 숫자만이 아니라, 숫자(문자) 형식으로 들어오는 경우가 종종 있다.

 

예를 들어 아기 몸무게 항목 값에

g)   1200,  1400,  1500 이런식으로 대부분 입력이 되지만

업무하는 부서 특성상 1200(+30) 이런식으로 증가값을 더 입력해서

업무적으로 눈에 띄게끔 하는 부서들이 가끔 있다.

 

몸무게를 kg으로 변환해서 연동하는 경우에. 오류가 발생한다.

1200(+30)이 문자열이기에 발생한다.

 

이런 경우가 생길 때, 1200(+30) 에서 1200의 값만 잘라야 하는 경우가 생긴다.

 

이런경우에 instr, substr을 이용해서, 데이터를 잘라낼 수 있다.

 

select substr('1200(+30)', 0, instr('1200(+30)', '(') -1)
  dual

;

 

instr함수를 이용해서 '(' 문자열의 위치를 찾아

substr함수로 처음부터 찾은 위치 이전까지의 문자를 잘라, 1200의 값만 가져온다.

'DB' 카테고리의 다른 글

text index, contains  (0) 2020.05.21
오라클 merge  (0) 2020.05.21
두 날짜 시간의 차 구하기..  (0) 2013.07.30
오라클 Outer 조인시 주의점.  (0) 2013.07.09
Posted by 달려라곰간지
DB2020. 5. 21. 10:27

merge into 테이블명

       using dual

                  on ( deptcd = '1000'

                   and seqno = 1

                 ) -- pk값에 대한 정보

       when matched then

               update

                    set  deptnm = 'A부서'

 

       when not matched then

               inesrt (

                         deptcd

                       , seqno

                       , deptnm

              ) values (

                        '1000'

                       , 1

                       , 'A부서'

              )

 

데이터가 있는지 여부를 체크해서 없을경우에는 insert를 하고

데이터가 있을 경우에는 update를 해야하는 경우가 많을때 사용한다.

 

                         

                                

                                

'DB' 카테고리의 다른 글

text index, contains  (0) 2020.05.21
오라클 instr, substr을 이용한 특정문자열 자르기.  (0) 2020.05.21
두 날짜 시간의 차 구하기..  (0) 2013.07.30
오라클 Outer 조인시 주의점.  (0) 2013.07.09
Posted by 달려라곰간지