목록Oracle SQL (16)
개발 블로그
SQL SELECT 쿼리 문법 순서와 실행 순서 SQL의 SELECT 쿼리문이 어떤 순서로 실행이 되는지를 알면 올바르고 효율적인 쿼리를 짜는데에 많은 도움이 된다. 따라서 SQL 문법 순서와 실제 실행 순서를 다음과 같이 정리해 본다. SQL 문법 순서 arabella.tistory.com SQL의 SELECT 쿼리문이 어떤 순서로 실행이 되는지를 알면 올바르고 효율적인 쿼리를 짜는데에 많은 도움이 된다. 따라서 SQL 문법 순서와 실제 실행 순서를 다음과 같이 정리해 본다. SQL 문법 순서 SELECT FROM WHERE GROUP BY HAVING ORDER BY SQL 실제 실행 순서 FROM : 각 테이블 확인 ON : 조인 조건 확인 JOIN : 테이블 조인 (병합) WHERE : 데이터 추..
오라클 PLAN 보는 법 1. predicate information 2. column projection e 로 시작 하는 것은 예상 치 a 로 시작 하는 것이 실측 치 블럭 (buffer) 보다 a - rows가 더 커야 효율적이다. index / table access의 a - rows가 같아야 효율적이다. @ 인덱스가 찾았는데도 테이블 엑세스가 되는 이유 근데 쿼리는 * 을 조회해서 인덱스에 없는 컬럼을 조회 했기 때문에 @ 인덱스를 안 타는 쿼리의 이유 인덱스 안에 컬럼의 값을 가공 했을 때 인덱스를 타지 않아서 null이 될 떄 형변환이 되었을 때 인덱스 가공이 될 때 like는 select * from emp where like가 % 앞에 있으면 탈 때도 있고 안 탈 떄도 있다. %가 뒤에 ..
오라클에서 실행계획(Execution Plan)은 SQL 실행시 최적화 단계에서 옵티마이저(Optimizer)가 만들어 내는 SQL 실행을 위한 방법, 단계 순서를 기술한 것 으로 다음과 같은 내용들이 포함됩니다. SELECT 쿼리가 실행될 때 테이블 및 인덱스는 어떤식으로 접근하는지 조인은 해시조인, 머지조인, 중첩루프조인 중 어떤 조인을 사용하고 테이블 조인순서는 어떤 테이블을 먼저 할 것인지 어떤 SQL 연산을 이용하는지(필터, 정렬, 집계 등을 위한 연산) 오라클 옵티마이저가 실행계획의 각 단계마다 예상되는 비용 사항을 표시하는 최적화 정보
1. INDEX INDEX는 오라클에서 제공하는 객체로 SQL 명령문의 처리 속도를 향상시키기 위해서 행들의 위치 정보를 가지고 있다. (내부 구조는 B-트리 형식으로 구성) 검색 속도가 빨라지고 시스템에 걸리는 부하를 줄여 시스템 전체 성능을 향상시킨다. 인덱스 구조 - ROWID는 데이터베이스에 저장되어 있는 데이터의 주소이다 SELECT ROWID, EMP_ID, EMP_NAME FROM EMPLOYEE; - 인덱스는 KEY와 ROWID를 가지고 있는데 KEY는 인덱스를 생성할 때 지정한 컬럼의 값이고 ROWID는 KEY에 해당하는 데이터의 주소이다. 인덱스 종류 종류 설명 고유 인덱스(UNIQUE INDEX) 중복되지 않는 데이터를 인덱스의 키값으로 지정하는 인덱스이다. 비고유 인덱스(NONUNI..
Data Block - Extents - Segments - Tablespaces 저장구조를 정리하자면, 이런 도식이 생성되는데요. 다시 정리하자면, Oracle의 데이터는 Data Block에 저장됩니다. Data Block은 실질적으로 데이터가 저장되는 Data File의 OS Block의 크기 단위로 I/O가 되어야 하기때문에 Data Block은 OS Block의 배수 만큼의 크기를 가지는 것을 권장합니다. 이런 Data Block들의 연속적인 집합을 Extent라 합니다. 기본 설정마다 다를 수 있으나 기본적으로 초기 Extent의 크기는 5 Data Block 이며, 할당 된 Extent의 공간이 꽉 찰 경우에만 추가 Extent를 할당합니다. 이때 크기는 기존 Extent보다 크거나 같습니다..
DBMS 엔진은 요청받은 쿼리문을 실행하기 위해 파싱(Parsing)이라는 과정을 진행한다. 이 파싱에는 문법 체크, 권한 유무, Library cache에 기존 쿼리가 있는지를 체크하는 공통 파싱 Library cache에 기존 쿼리가 있는 경우 진행하는 소프트 파싱(Soft parsing) 기존 쿼리가 없는 경우 진행하는 하드 파싱(Hard parsing) 총 3가지가 있다. Parse > Bind > Execute > Fetch SQL문이 사용자 프로세스에서 실행되었을 때 결과값을 리턴하기 까지의 과정 1. 서버프로세스(PGA-program global area)로 전달됨 2. Parse 과정 2-1. syntax 확인 2-2. shared pool에 같은 SQL이 있는지 확인 (있을경우 parse..
2023-04-13 DB튜닝 1차: 과제 차주 목요일에 오늘 배운 오라클 구조에 대한 페이퍼 시험 진행 아래 조건에 맞게 테스트 환경 구성 오라클 19C 테이블스페이스 : 100G 할당 회원테이블에 10만 건(엑셀활용) 메인주문: 100만건 주문상세: 주문건당 1~2개까지 (100~200만건) 아이템: 엑셀 활용 3개의 테이블(회원/메인주문/주문상세) PL/SQL 데이터 생성문을 차주 수요일 퇴근전까지 제출 조건 하나를 더 추가 합시다. plsql이름 : testenvturn(a,b) 파라미터 : a: 1 = 회원, 2 = 메인주문, 3 = 주문상세 b: 생성될 row 수 이하는 부장님이 제공해주신 DDL문 CREATE TABLE member ( id VARCHAR2(10) NOT NULL , nm VA..
[ 그룹 함수 ] 대량의 데이터들로 집계나 통계 같은 작업을 처리해야 하는 경우 사용되는 함수들이다. 모든 그룹 함수는 NULL 값을 자동으로 제외하고 값이 있는 것들만 계산을 한다. 그룹함수란 하나 이상의 행을 그룹으로 묶어 연산하며 총합, 평균 등을 하나의 컬럼으로 반환하는 함수이다. 1) SUM SUM(NUMBER 타입의 컬럼) 제시된 컬럼 값들의 합계를 반환한다. -- EMPLOYEE 테이블에서 전 사원의 총 급여의 합계를 조회 SELECT SUM(SALARY) FROM EMPLOYEE; -- EMPLOYEE 테이블에서 전 사원의 총 급여의 합계를 조회 SELECT TO_CHAR(SUM(SALARY), 'FML999,999,999') FROM EMPLOYEE; -- EMPLOYEE 테이블에서 남자..