■ CBO 의 최적화 절차 순서
Parsing --> Query Transformation --> Estimator Plan Generation --> RowSource --> Generation
■ Optimizer 영향 요소
SQL 문장형태
인덱스, 테이블 구조
통계정보
옵티마이저 모드
DBMS Version
시스템 및 네트워크 상태
사용컬럼, 연산자 형태
힌트 사용
■ Optimizer 관련 파라미터 설정
Cursor_Sharing
: SQL 조건절에 있는 상수값들을 변수로 전환시켜 파싱
DB_FILE_MULTIBLOCK_READ_COUNT
: Full Table Scan, Index Fast Full Scan 을 할 때 한번 I/O 에 읽을 블록수를 지정할 수 있고 기본값은 8
OPTIMIZER_INDEX_CACHING
: Nested Loops 조인이나 In-List 탐침등의 인덱스를 반복 액세스해서
인덱스 블록들이 버퍼에 캐싱되어 있을 확율을 높임.
OPTIMIZER_INDEX_COST_ADJ
: 비용계산을 할 때 인덱스 액세스의 비중을 조정하는 역할
100(기본값) 은 계산된 비용을 그대로 적용한다는 의미, 10 을 주었다면 1/10 로 계산한다는 의미.
■ Query Transformer (질의 변환기)
=> 질의 변환의 유형에는
Inline View 나 View 의 Merging,
조건절 진입 ( Predicate Pushing )
서브쿼리의 비내포화 ( Subquery Unnesting),
실체뷰( Materialized View) 의 질의 재생성( Rewrite),
OR 조건의 전개 (Expansion) 등이 있다.
** 좌우를 이항해서 연산하지는 않는다.
ex. sales_qty*12 > 1200 ==> sales_qty > 1200/12
■ View Merge 가 불가능한 경우
집합연산 ( UNION, UNION ALL, INTERSECT, MINUS) 이 View 쿼리 내에 존재할 때
Connect By 와 같은 재귀 호출 SQL 일 때
RowNum 을 사용한 경우
■■▶★ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ▒♬♪♩
'SQL' 카테고리의 다른 글
SQL:2008 is the sixth revision of the ISO and ANSI standard for the SQL database query language.해 주세요. (0) | 2011.07.15 |
---|---|
SQL-92 was the third revision of the SQL database query language (0) | 2011.07.15 |
Cost Based Optimizer (0) | 2011.05.08 |
액세스 효율의 영향요소 (0) | 2011.05.08 |
sql> Alter system dump datafile 61 block 41060 (0) | 2011.05.01 |