본문 바로가기

Oracle27

[Oracle] INDEX_DESC HINT 가장 최근에 추가된 데이터를 조회하거나 할때 INDEX_DESC HINT를 자주 사용합니다. 지정한 인덱스에 대해서 인덱스를 역순으로 스캔합니다. 사용 방법은 다음과 같습니다. SELECT /*+ INDEX_DESC(TABLE_ALIAS_NAME INDEX_NAME) */ * FROM TABLE_NAME TABLE_ALIAS_NAME WHERE 조건절 INDESX_DESC 안에 첫번째에 테이블의 별칭을 써주시고, 두번째에는 인덱스의 이름을 써주시면 됩니다. 또한 INDEX_DESC는 ROWNUM과 함께 많이 쓰입니다. 만약, 조건절에 ROWNUM = 1을 주게되면 가장 최신의 데이터 ROW 1개만을 가지고 올 수 있습니다. 이 방법을 이용하면 데이터 조회 속도를 늘릴 수 있습니다. 2019. 9. 9.
[Oracle] FULL SCAN HINT 1. FULL HINT 실무를 뛰다보면 한테이블에 수백만에서 많개는 수천만의 데이터를 가진 테이블을 조회해서 데이터를 추출해야할 일들이 많이 있습니다. 이럴 경우 FULL과 HASH를 이용해서 데이터 추출을 많이 하였습니다. 하지만 왜 FULL을 써야하는지에 대해서는 잘 알지 못해서 이번 기회에 한번 정리를 하려고합니다. FULL SCAN은 CPU와 디스크의 사용률을 높이기 때문에 DBA들이 좋아하지 않습니다. 하지만 데이터량이 너무 많고, 적당한 인덱스가 없는 경우 FULL 과 HASH를 조합해서 데이터를 종종 추출하곤합니다. FULL SCAN 방식은 다중 블록단위 I/O를 수행합니다. ‘db_file_multiblock_read_count’ 파라미터에 설정된 값만큼 EXTENT의 블록들을 한번의 I/.. 2019. 9. 9.
[Oracle] TO_DATE 날짜 변환 쿼리를 짜다보면 종종 문자를 DATE형태로 바꿔야 할 경우가 많이 있습니다. 오늘은 문자를 날짜형태로 바꾸는 방법에 대해서 알아보겠습니다. 우선 시간의 종류에는 년, 일, 시, 분, 초가 있습니다. 1. TO_DATE 문자 타입 형식 종류 역할 YYYY,YYY,YY,Y 년도 표시 MM 숫자 월 표시 DD 31일 형태로 일 표시 HH24 24시 형태로 시 표시 MI 59분 형태로 분 표시 SS 59초 형태로 초 표시 2. 쿼리 예제 SELECT TO_DATE('20190909132450', 'YYYYMMDDHH24MISS'); 2019년 9월 9일 13시 24분 50초를 DATE형태로 바꿔 보았습니다. 쿼리의 결과를 DATE형으로 받거나 할때 사용하시면 됩니다. 위에 처럼 초까지 안쓰셔도 되고 필요한 만큼.. 2019. 9. 9.
[Oracle] LISTAGG 데이터를 가지고 올 때 여러 행을 하나의 컬럼으로 가져와야할 경우가 있습니다. 이때 사용하는 것이 LISTAGG 함수입니다. 사용방법은 다음과 같습니다. SELECT LISTAGG(가져올컬럼, 구분자) WITHIN GROUP (ORDER BY 순서컬럼) 예를 들어 보겠습니다. 먼저 다음과 같이 데이터를 삽입하겠습니다. INSERT INTO USER (USER_NAME, FAVORITE_FOOD) VALUES('홍길동', '마라샹궈'); INSERT INTO USER (USER_NAME, FAVORITE_FOOD) VALUES('홍길동', '라면'); INSERT INTO USER (USER_NAME, FAVORITE_FOOD) VALUES('홍길동', '햄버거'); INSERT INTO USER (USE.. 2019. 8. 4.
[Oracle] Merge문 사용 UPDATE와 INSERT를 동시에 처리하고 싶은 경우 MERGE문을 사용하면 원하는 조건에 맞는 행은 UPDATE를, 조건에 맞지 않는 행은 INSERT를 할 수 있습니다. 즉, 이미 존재하는값은 UPDATE, 신규로 입력된 값은 INSERT합니다. MERGE INTO CUSTOMER C USING ( SELECT USERNO , USERNAME , ADDRESS , PHONE FROM NEW_JOIN WHERE INPUT_DATE = '20170724' ) N ON ( C.USERNO = N.USERNO) WHEN MATCHED THEN UPDATE SET C.USERNAME = N.USERNAME , C.ADDRESS = N.ADDRESS , C.PHONE = N.PHONE WHEN NOT MATC.. 2019. 7. 18.
[Oracle] 조인 방법 (use_nl, use_hash, use_merge) 만약 각각의 결합 알고리즘에 대해서 숙지를 하지 않으셨다면 이 앞절의 결합알고리즘과 성능을 참고해주세요. 이번 포스팅에서는 어떻게 힌트절에 테이블 조인 방법을 지정하는지에 대해서 간단한 예제만 첨부하겠습니다. SELECT /*+ ordered use_nl(D E)*/ E.DEPTNO , E.EMPNO , D.DNAME FROM DEPT D , EMP E WHERE D.DEPTNO = E.DEPTNO ; SELECT /*+ ordered use_hash(D E)*/ E.DEPTNO , E.EMPNO , D.DNAME FROM DEPT D , EMP E WHERE D.DEPTNO = E.DEPTNO ; SELECT /*+ ordered use_merge(D E)*/ E.DEPTNO , E.EMPNO , D... 2019. 6. 24.