아래와 같은 힌트들이 주로 사용된다. /*+ INDEX(A MAN_PK) */ /*+ ORDERED USE_NL(A, B, C, D, F) INDEX(B MAN_IX1) */ /*+ FULL(A) PARALLEL(A,4)*/ /*+ LEADING(A B) INDEX(A MAN_PK) INDEX(B CAR_PK) */ A B테이블을 우선으로 선회하고 인덱스를 태운다.
[카테고리:] oracle
오라클 초성검색 함수
function fn_korinitialkeyword( str in varchar2) return varchar2 is returnStr varchar2(100); cnt number := 0; tmpStr varchar2(10); begin if str is null then return ''; end if; cnt := length(str); for i in 1 .. cnt loop tmpStr := substr(str,i,1); returnStr := returnStr || case when tmpStr < 'ㄱ' then substr(tmpStr, 1, 1) when ascii('ㄱ') <= … 계속 읽기 오라클 초성검색 함수
connect by level
select levelfrom dualconnect by level <= 7; 결과값 1234567
오라클 소수타입과 TO_CHAR FM표기법
NUMBER(5,2) → 총 5자리 중 소수점 2자리 라는 의미 TO_CHAR FM표기법 NUMBER타입을 위와 같이 선언하고 단순 SELECT를 날리면 0.1이 .1로 표기된다.엄청 당황스러운 일인데, 이것을 보완하기 위해 FM표기법을 활용해야 한다. SELECT TO_CHAR(0.12,'FM990.99') FROM DUAL; FM뒤의 숫자들의 의미 9: 있으면 표기, 없으면 생략0: 없으면 0표기(ex: 0.1일 경우 FM9.9 로 하면 .1 로 나온고, FM0.9로 하면 0.1로 나온다) … 계속 읽기 오라클 소수타입과 TO_CHAR FM표기법
WITH Table AS () SELECT
WITH table1 AS ( SUB쿼리 ) ,table2 AS ( SUB쿼리 ) SELECT a.*, b.* FROM table1 a, table2 b where a.idx = b.idx ;
Golden 에서 쿼리 PLAN 상세히 보기
Golden에서 쿼리를 작성하고 Ctrl+P 를 통해 간략한 플랜을 볼 수 있지만, 아래처럼 코드 몇 줄 추가하여 F5를 눌러 상세한 정보를 볼 수 있었다. EXPALIN PLAN FOR SELECT * FROM TEST1 A, TEST2 B WHERE A.DATA = B.DATA ; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY()); F5(Run Script 실행) 내용을 복사해서 울트라에디터와 같은 편집기에 붙여넣기해서 보면 아래처럼 나온다. 하단에서 … 계속 읽기 Golden 에서 쿼리 PLAN 상세히 보기
INSERT와 UPDATE를 동시에 MERGE INTO
아래처럼 합니다. 대충 감이 오실라나 모르겠네요 merge into returncode a --입력할 테이블 using aaboo_tmp01 b --소스테이블(사용할 테이블이 없으면 Default로 DUAL 사용) on ( --조건문 a.bank='KMC' and a.returncode = b.col1 ) when matched then --입력할 테이블에 해당데이터가 있으면 update set --업데이트하고 a.returnname = b.col3 when not matched then --입력할 테이블에 해당데이터가 없으면 insert (bank, returncode, returnname) … 계속 읽기 INSERT와 UPDATE를 동시에 MERGE INTO