SQL 활용과 오라클(Oracle) Hint를 이용한
SQL튜닝 재직자 향상과정
★ 교육개요 ★
★ 교육목표 ★
★ 교육대상 ★
개요 및 실습데이터 설치 | 오라클, 데이터베이스관련 용어 오라클 에디션(ORACLE EDITION) 오라클 버전 변화 실습데이터 설치 및 SQL*PLUS 실행환경 설정 실습데이터 구조(테이블 정의서) 데이터베이스 무결성(DataBase Integrity) |
---|---|
SQL기본 | SQL*Plus 명령어 Schema 계정에서의 기본 쿼리문 기본 쿼리문 ROWNUM 및 NULL값, NLS_DATE_FORMAT 데이터 타입(Data Type) SQL 문자함수, 집합함수, 숫자 및 날짜함수, 변환함수, 일반함수 및 조건식 |
서브 쿼리 및 조인 | 서브 쿼리(SUB QUERY) 개요 복수행 서브쿼리(Multi-Row Sub Query) 상관 서브쿼리(Correlated Sub Query) Scalar SubQuery, 인라인뷰, WITH 테이블 별명(Table Alias) 카티션 프로덕트 EquiJoin, Non EquiJoin Self Join, Outer Join 계층형 쿼리(Hierarchical Query) |
SQL 활용 | 분석함수 기본형식 및 응용 테이블 생성, 변경, 삭제 데이터 딕셔너리 DML, INSERT 명령어, 단일행 입력, 복수행 입력, UPDATE, DELETE, MERGE 인덱스(INDEX) 단일/복합, 고유/비고유, 재구성, 삭제, 숨기기 뷰(VIEW) 단순, 복합, 인라인 동의어(Synonym) 시퀀스(Sequence) |
Hint / Tuning | SQL문 처리과정 커서(Cursor) & Oracle Memory DBMS_STATS 패키지 사용하기 Optimizer Statistics(Table/Column 통계정보) Literal SQL & Bind Variable SQL(Soft Parsing/Hard Parsing) CURSOR_SHARING 파라미터 튜닝의 도구 - SQL AUTOTRACE 튜닝의 도구 – DBMS_XPLAN 튜닝의 도구 – Event 실행계획 해석 실행계획 해석(predicate) 초기화 파라미터 OPTIMIZER_MODE Optimizer Mode Setting 방법 규칙 기반 옵티마이저(Rule-Based Optimizer) 비용기반 옵티마이저(Cost-Based Optimizer) Optimizer Mode를 변경하는 힌트 (RULE) Optimizer Mode를 변경하는 힌트(FIRST_ROWS) Optimizer Mode를 변경하는 힌트(ALL_ROWS) Optimizer Mode를 변경하는 힌트(CHOOSE) 실행계획 SQL 연산(AND-EQUAL) 실행 계획 SQL 연산(CONCATENATION) 실행계획 SQL 연산(COUNT) 실행계획 SQL 연산(COUNT STOPKEY) 실행계획 SQL 연산(FILTER) 실행계획 SQL 연산(HASH ANTI-JOIN) 실행계획 SQL 연산(HASH SEMI-JOIN) 실행계획 SQL 연산(NESTED LOOP SEMI-JOIN) 실행계획 SQL 연산(INDEX RANGE SCAN) 실행계획 SQL연산(INDEX RANGE SCAN DESCENDING) 실행계획 SQL연산(INLIST ITERATOR) 실행계획 SQL연산(MERGE JOIN) 실행계획 SQL연산(MERGE SEMI JOIN) 실행계획 SQL연산(MERGE ANTI-JOIN) Hints For Online Application Upgrade (CHANGE_DUPKEY_ERROR_INDEX) Hints For Online Application Upgrade (IGNORE_ROW_ON_DUPKEY_INDEX) Hints For Online Application Upgrade (RETRY_ON_ROW_CHANGE) 오라클 인덱스(Oracle Index) 비트리 인덱스(B*Tree Index) 비트맵 인덱스(Bitmap Index) 비트맵 조인 인덱스(Bitmap Join Index) 역전환키 인덱스(Reverse Key Index) Hints For Access Paths(Data Scanning) Hints For Access Paths(FULL) Hints For Access Paths(CLUSTER) Hints For Access Paths(HASH) Hints For Access Paths(INDEX, INDEX_COMBINE) Hints For Access Paths(INDEX_ASC) Hints For Access Paths(INDEX_DESC) Hints For Access Paths(NO_INDEX) INDEX 힌트와 복합인덱스 use_invisible_indexes, no_use_invisible_indexes 힌트 Hints For Access Paths(NO_EXPAND) Materialized View(구체화뷰) Hints For Access Paths(REWRITE) Hints For Access Paths(INDEX_FFS) Hints For Access Paths(INDEX_SS) Hints For Access Paths(INDEX_JOIN) Hints For Access Paths(NATIVE_FULL_OUTER_JOIN) Hints for Join Orders 중첩루프조인(Nested Loop Join) Hints for Join Orders(ORDERED) Hints for Join Orders(USE_NL) Hints for Join Orders(USE_NL_WITH_INDEX) Hints for Join Orders(NO_USE_NL) 해시조인(HASH JOIN, USE_HASH, NO_USE_HASH) Hints for Join Orders(HASH_AJ) Hints for Join Orders(HASH_SJ, NL_SJ) Hints for Join Orders(USE_MERGE) Hints for Join Orders(LEADING) RBO에서의 드라이빙 테이블 선정 CBO에서의 드라이빙 테이블 선정 Semi Join(세미 조인) Anti Join(안티조인) SWAP_JOIN_INPUTS(OUTER JOIN에서 드라이빙 테이블 선정) Additional Hints Additional Hints(DRIVING_SITE) Additional Hints(CACHE, NO_CACHE) Additional Hints(CURSOR_SHARING_EXACT) Additional Hints(GATHER_PLAN_STATISTCS) Additional Hints(DYNAMIC_SAMPLING) Additional Hints(RESULT_CACHE) Additional Hints(QB_NAME) Additional Hints(MONITOR) Hints For Query Transformations(서브쿼리의 종류) Hints For Query Transformations(UNNEST, NO_UNNEST) Hints For Query Transformations(MERGE, NO_MERGE), View Merging Hints For Query Transformations(phsh_subq, no_push_subq, SubQuery Pushing) Query Transformations(Predicate Pushing, Predicate Pushdown) Query Transformations(Join Predicate Pushdown, push_pred, no_push_pred) Query Transformations(OR-Expansion) SQL문 튜닝을 위한 접근 SQL 작성 TIP |