ORACLE - AUTO_INCREMENT 기능 구현
·
개발/ORACLE
SQL에서 테이블 생성 시 PK로 사용하는 컬럼은 대게 자동 증가(Auto Increment)를 사용한다. MySQL에서 테이블 생성시 PK에 Auto_Increment를 사용하면 되지만 오라클에는 없기 때문에 시퀀스와 트리거를 조합해 기능을 구현할 수 있다.12c 이상에서는 IDENTITY 컬럼을 사용할 수 있다.1. 시퀀스시퀀스 생성CREATE SEQUENCE my_sequence START WITH 1 -- 시작 값 INCREMENT BY 1 -- 증가 값 NOCACHE -- 캐싱 안 함 (안정성 위해) NOCYCLE; -- 최댓값 도달 시 다시 시작 안 함 시퀀스를 사용하여 INSERTINSERT INTO my_table (id, name) ..
ORACLE - ORA-25156 ANSI 조인, (+)
·
개발/ORACLE
ORA-25156old style outer join (+) cannot be used with ANSI joins[99999][25156] ORA-25156: 이전 방식의 포괄 조인(+)은 ANSI 조인과 함께 사용할 수 없음 Position: 8860 위 에러는 ANSI 조인과 (+) 를 같이 사용하면 나는 에러다.ANSI는 ANSI끼리(+)는 (+)끼리 사용하면 된다. 되도록이면 ANSI를 사용하는게 좋다.(+)는 OUTER JOIN 으로 바꾸자
Oracle 힌트절
·
개발/ORACLE
오라클 힌트절에 대해 알아보자.오라클의 옵티마이저가 최적의 실행 경로를 만들어 내지만그럼에도 개발자들이 생각한 경로와 다르게 실행되는 경우가 종종 있다.그럴 때 사용 하는 게 힌트절이라고 생각하면 된다. (옵티마이저가 힌트를 무시할 수도 있다.) 나는 서비스 중이고 이미 많은 데이터가 있고 인덱스 추가가 힘들 때 최후의 튜닝 방법으로 썼다.보통은 인덱스 추가로 해결되는 경우도 많다.HINT 사용법힌트는 /*+ {hint} */  형태로 사용한다.SELECT /*+ {hint} */*FROM DUAL;자주 사용하는 HINT 유형과 종류JOIN 방식/*+ USE_NL(TABLE_NAME) */NESTED LOOP JOIN/*+ USE_HASH(TABLE_NAME) */HASH JOIN/*+ USE_MERGE..
Oracle 인덱스
·
개발/ORACLE
인덱스 란데이터를 보다 빠르게 검색할 수 있도록 도와준다.아무 옵션 없이 인덱스를 생성하게 되면 B-Tree 인덱스로 생성된다.프라이머리 키나 유니크에 의해 자동으로 생성되는 인덱스(자동 인덱스)와 수동으로 만드는 인덱스가 있다.인덱스 명은 중복이 안된다. (mysql에서는 중복 name이 되었는데 오라클은 안되더라) 인덱스 생성 시 고려할 점인덱스 선정 기준큰 테이블에서 적은 양의 데이터를 조회할 때 (통상 15% 이내)where 절이나 join, order by 에서 자주 사용되는 컬럼Null 값이 많이 포함된 컬럼 인덱스 주의 사항테이블의 데이터가 적거나 결과가 15%를 초과한다면 오히려 성능이 떨어짐수정, 삭제, 생성이 많은 테이블은 생성하지 않는 게 좋음부정형 비교 ('!=', 'NOT IN')..
Oracle Explain Plan Operation
·
개발/ORACLE
2024.08.02 - [개발/ORACLE] - Oracle 튜닝 - 실행 계획 Oracle 튜닝 - 실행 계획2024.05.02 - [개발/ORACLE] - Oracle 에서 explain plan 쿼리 계획 Oracle 에서 explain plan 쿼리 계획Mysql에서 쿼리 튜닝을 위해 혹은 인덱스를 걸기 위해 자주 사용했던 explain.Oracle에서는 문법이 다른데 어떻게joolog.tistory.com 정렬 및 중복 제거SORT ORDER BYORDER BY 구문에 의해 결과 집합을 정렬하는 단계.쿼리의 결과를 사용자 지정 순서대로 정렬한다.정렬 작업은 대개 메모리에서 수행되지만, 메모리가 부족할 경우 디스크를 사용한다.SELECT name FROM employees ORDER BY sala..
Oracle 튜닝 - 실행 계획
·
개발/ORACLE
2024.05.02 - [개발/ORACLE] - Oracle 에서 explain plan 쿼리 계획 Oracle 에서 explain plan 쿼리 계획Mysql에서 쿼리 튜닝을 위해 혹은 인덱스를 걸기 위해 자주 사용했던 explain.Oracle에서는 문법이 다른데 어떻게 다른지 사용법을 알아보자MysqlEXPLAINSELECT * FROM {table_name};-- update, insert, delete 문에도joolog.tistory.com 쿼리 튜닝을 하게 되면서 고민이 생겼다.어떻게 하는게 가장 효과적일까. 물론 처음부터 잘 짠다면 좋겠지만내가 하는 일의 경우 남이 짜놓은 쿼리를 튜닝하게 된다. 그 남이 같은 회사사람도 아닌 몇 년 전 사람이라 왜 이렇게 되는지 물어볼 수도 없다. 지금 맡은..
Oracle From 절에 2개 이상의 테이블 JOIN, (+)
·
개발/ORACLE
A 테이블의 데이터 221개B 테이블의 데이터 101개중복 데이터 100개라고 가정하겠다. SELECT count(*)FROM A, B-- count(*) = 22,321FROM 절에 두개의 테이블을 아무조건없이 명시하면 221*101 이 이루어진다.만약 테이블이 3개라면 A * B * C 가 되어 무수히 많은 데이터가 만들어진다. SELECT count(*)FROM A, BWHERE A.pk=B.pk;-- count(*) = 100SELECT count(*)FROM A JOIN B ON A.pk=B.pk;SELECT count(*)FROM A INNER JOIN B ON A.pk=B.pk;WHERE 절에 조건을 주면 A와 B의 교집합, 즉 같은 값만 가져오고표준 ANSI 문법으로 JOIN 하면 동일한 ..
Oracle install 19c
·
개발/ORACLE
다운로드오라클 다운로드 Database Software Downloads | Oracle 대한민국Oracle Database Software Downloads Whether you are a developer, a data scientist, a DBA, an educator, or just interested in databases, Oracle Database 23ai is the ideal way to get started. It provides native support for all modern data types, analytics, anwww.oracle.com오라클 사이트에 접속해서 해당 플랫폼에 맞춰 다운로드 받으면 된다.윈도우와 리눅스 외에도 많은 플랫폼에 맞춰 다운로드 받을 수 있다...