study:oracle:datadb:2week_1:chap1
문서의 이전 판입니다!
제 3장 SQL의 실행계획
SQL과 옵티마이져
- 옵티마이져 목표 : SQL로 요구된 결과를 최소의 비용으로 처리할 수 있는 처리 경로를 결정
- SQL과 Optimizer의 관계
- SQL은 결과에 대한 요구
- 옵티마이져는 없는 길을 생성해 주는 것이 아님. 이미 존재하는 길을 단지 찾아줄 뿐
⇒ 사용자가 부여한 영향 요소에 따라 논리적으로 존재하는 최적이 달라>짐
3.1.1 옵티마이져와 우리의 역할
- 숫자 목록 관계형 데이터베이스의 출현배경
: 데이터들 간에 물리적인 연결고리를 가지지 않아도 논리적인 연결고리만 있다면 원하는 데이터를 액세스 할 수 있다.
⇒논리적인 방법만으로 데이터를 찾을 수 있는 장치가 필요 - SQL? 요구서에 불과함. 표준언어로 채택한 것
- 옵티마이져 ? 사용자의 요구에 따라 그 때마다 최적의 경로를 찾아 주는 역할 책임자
- 옵티마이져 실행계획에 영향을 주는 것들
- 옵티마이져는 단지 이미 존재하는 길들 중에서 하나를 선택해 주는 역할 ⇒ 사용자의 역할이 중요
3.1.2. 옵티마이져의 형태
규칙기반 옵티마이져 (RBO : Rule_based Optimizer)
- 인덱스 구조나 사용 연산자에 부여된 순위로써 최적경로 결정
① ROWID로 1로우 액세스 ② 클러스터 조인에 의한 1로우 액세스 ③ Unigue HASH Cluster에 의한 1로우 액세스 ④ Unique INDEX에 의한 1로우 액세스 ⑤ CLUSTER 조인 ⑥ Non Unique Hash Cluster Key ⑦ Non Unique Cluster Key ⑧ Non Unique 결합 인덱스 ⑨ Non Unique 한 컬럼 인덱스 ⑩ 인덱스에 의한 범위처리 ⑪ 인덱스에 의한 전체범위 처리 ⑫ Sort Merge 조인 ⑬ 인덱스 컬럼의 MIN, MAX처리 ⑭ 인덱스 컬럼의 ORDER BY ⑮ 전체 테이블 스캔
- 단점
- 통계정보를 전혀 가지지 않음
- 경우에 따라 비현실적인 처리경로 수립
study/oracle/datadb/2week_1/chap1.1273714118.txt.gz · 마지막으로 수정됨: 저자 starlits
