본문 바로가기

오라클 성능 개선 (190510) 스칼라 서브쿼리는 성능이 떨어진다. 왜냐하면 스칼라 서브쿼리도 상관 서브 쿼리에 속하므로 지속해서 메인 쿼리문의 SYSTEM S를 방문한다. FROM 절에 서브 쿼리 (인라인 뷰) 를 생성하여 성능을 개선할 수 있었다. // @ \\\\\ 경로 \ TEST.sql // DDL CREATE TABLE SYSTEM( SYSTEM_ID VARCHAR2(5), SYSTEM_NAME VARCHAR2(20) ); INSERT INTO SYSTEM VALUES('XXX','혜화DB'); INSERT INTO SYSTEM VALUES('YYY','강남DB'); INSERT INTO SYSTEM VALUES('ZZZ','영등포DB'); CREATE TABLE RESOURCE_USAGE(SYSTEM_ID VARCHAR2(..
오라클실습 (190509) * 서브쿼리 일반적인 서브쿼리는 먼저 동작하고 메인 쿼리로 답을 던져주고 메인쿼리가 실행되지만 MAIN 쿼리와 SUB 쿼리가 지속해서 데이터를 주고 받는 쿼리를 CORRELATED SUBQUERY라고 한다. SCALAR SUBQUERY도 상관 서브 쿼리이다. 자기 혼자 단독으로 실행할 수 없다. FROM 절에 사용하는 뷰를 인라인 뷰라고 부른다. FROM 절에 테이블 대신 사용하는 서브쿼리를 뷰라고 부른다. 1번을 보면 서브쿼리가 테이블 역할을 할 수 있음 result set을 테이블처럼 쓸 수 있다. Relation의 결과는 Relation이다. 테이블의 구조가 정적으로 정의되는 것 -> 이미 만들어진 테이블 새로운 데이터의 구조를 만들 수 있다 -> 동적인 테이블 인라인뷰는 정적인 테이블이 아니라, ..
아스키코드, 유니코드 전 세계의 모든 문자를 담지 못한다. - 유니코드는 고정형, 가변형 등이 있음
오라클과제 (190508) SDLC = Software Development Life Cycle → 소프트웨어 생명주기 1. SDLC 암기후 설명, ERD 언제 도출? , 요구사항명세서는 언제? 1. 요구 분석 단계 : Requirement analysis 개발할 소프트웨어의 기능과 제약조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계. 개발해야 할 소프트웨어의 성격을 정확히 이해하고 개발 방법과 필요한 자원과 예산을 예측해야한다. 요구 명세서를 정확하게 작성해야 한다. 2. 시스템 명세 단계 : System Specification 시스템이 무엇을 수행해야 하는가를 정의 시스템 기능 명세서를 작성하여 입력 데이터, 처리내용, 생산 결과가 무엇인지를 정의 3. 설계 단계 : Design 시스템 명세 단계에서 정의한 ..
오라클과제 (190507) 1. 날짜 용어 정리 1. PM 오후의 영문 표기 2. HH, HH12, HH24 HH, HH12는 01~12시 형태로 표현하고, HH24는 시간을 01~23시 형태로 표현한다. 3. MI 는 분을 00분~59분 형태로 표현한다. 4. SS 는 초를 01초~59초 형태로 표현한다. 5. SSSSS : 초 (자정부터 현 시간 까지) 즉, 0~86399초 사이라는 의미다. 6. 밀리수의 표시 자리수 지정. ss.ff2 / ss.ff3 7. D, d D와 d는 주중을 일로 표현한다. 7 : 토요일 1 : 월요일 순서로 ... 진행되고 오늘 같은 경우 3이 된다. select to_char(sysdate,'D') from dual; 8. DD, DDD, dd, ddd DDD의 경우 1월 1일부터 지금까지 얼마나..
오라클실습 (JOIN) RDB ? JOIN ? RDBMS의 꽃 JOIN은 데이터의 수평적 결합 집합연산자 수직적 결합 1번의 결과는 다음과 같다 SELECT DNAME, ENAME, JOB, SAL FROM EMP, DEPT WHERE DEPTNO=DEPTNO; 2번의 결과는 다음과 같다 SELECT DNAME, ENAME, JOB, SAL FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; 데이터가 집합연산자와 다르게 수평적으로 결합되는 것을 확인할 수 있다. JOIN의 구분은 FROM 절에 복수의 테이블이 왔을 때 JOIN임을 의미한다. 데이터를 기반으로 연결고리를 갖는다? 필요시에만 연산을 통해 연결을 해보자... emp.deptno = dept.deptno 이것이 연산이 이루어지는 과정임..
오라클실습 (190507) PL/SQL 을 잘 쓰면 정말 좋음 함수의 입력값으로 몇개가 들어오는가? 이것이 그룹행 함수와 단일행 함수의 차이점이다. 그룹행 함수? 3번을 보면 입력을 14개 받아서 하나의 결과를 낸다. 단일행 함수? 입력을 하나 받아서 하나를 리턴한다. *** Full table SCAN 데이터를 처음부터 끝까지 다 보아야만 결과가 나옴. (그룹행함수의 특성임) - 데이터양이 많아졌을때 무거운 연산이 될 수 있음 ** 많이 쓰이는 것들입니당 SUBSTR 부분 문자 추출 함수 LENGTH 문자열의 길이를 리턴 REPLACE 치환하는 함수 -> SQL 명령문은 대소문자를 구분하지 않지만, 데이터는 대소문자를 구분한다. instr 'A'의 위치가 몇번째야? 라는 의미이다. trim 7번에서 2번의 경우 trim할 문자를..
ROWNUM [요구 - 1] 변경 가장 top-n , bottom-n 을 통해 가장 월급을 많이 받은 사람 3명, 가장 월급을 적게 받은 사람 3명을 나오게 하시오 가장 실적이 좋은 영업 사원 3명, 실적 나쁜 영업 사원 3명을 뽑아 보고 싶죠? 이러한 것을 하기 위해 주로 함. [요구 -2] 수도 컬럼 예제, 설명 7번의 경우 연산자 우선순위 누가 높죠 ? and 와 or 중에 괄호를 통해 우선순위를 명확하게 해주어야 함 오라클의 optimizer 라면 왜 and를 먼저 처리하고 싶죠? AND를 먼저 처리를 하면 데이터의 양이 줄어 든다. 그러므로 옵티마이저는 AND를 OR 보다 선호함. OR 자체는 무거운 연산이기때문에 OR연산을 줄이는 연습이 필요하다 1번과 2번의 경우는 같음 3번의 경우 안돼! -> 순서에 ..