2014-10-18 3 views
0

나는 정말 간단한 문제가 : 대체 XX_FistName 성 (아마도 박사 또는 박사 학위 아무것도 쓰레기를.) 교체 이제 정규 표현식 사용하고 LASTNAME오라클 SQL은 FAST 문자열에서 일부 문자열을 대체

을 FIRSTNAME하기를 :

trim(regexp_replace(lower(vhc.name),'xx_|dr|\.|\,|phd|jr','') 

하지만 이건 정말 느립니다. 이 힌트를 어떻게 빨리 대체 할 수 있습니까? 데이터를 비교하고 다른 기능을 수행하기에는 너무 많은 데이터가 있으며 시간이 오래 걸립니다.

+1

표현식을 비교하는 경우 함수 기반 색인이 필요합니다. 검색어와 샘플 데이터가 정확히 무엇인지 알려주면 누군가가 특정 답변을 제공 할 수 있습니다. –

+1

@Csanesz _regexp_는 느리다는 평판을 얻고 있습니다. 대부분 처리하기 전에 어떻게 든 컴파일해야하기 때문입니다. 그러나 일단 완료되면, 그들은 전혀 느리지 않습니다 (특히 루프와 미리보기가없는 경우). 실제 검색어를 보여 주시겠습니까? 얼마나 많은 행이 있습니까? 관련 행에 대한 색인? –

답변

1

감소 된 것.

trim(regexp_replace(lower(vhc.name),'xx_|[dj]r|[.,]|phd','') 
+0

thx하지만 실제로이 regexp 바꾸기 및 다른 존재하는 경우 다른 놓기를 싶습니다. – Csanesz

+2

@Csanesz 쿼리 속도가 느려질 수 있습니다. 'regexp_replace'는 약간 CPU 집약적이지만 그렇게 느리지는 않습니다. 쿼리를 공유 할 수 있습니까? –