1. 옵티마이저(Optimizer)란?
SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성해 주는 DMBS 내부의 핵심엔진이다.
옵티마이저 종류
- RULE BASE OPTIMIZER - 15규칙*에 순서에 따라 실행계획을 가져가는 방식이다.
=> 수동카메라, 개발자가 본인의 의도대로 조작이 가능하다. - COST BASE OPTIMIZER - 데이터의 분포도와 통계자료를 바탕으로 실행계획을 가져가는 방식으로, 데이터의 분포도를 항상 최신화 해놓아야 한다.
=> 자동카메라, 효과적인 실행 계획을 가져갈 확률이 높다.
2. SQL 힌트문 (Oracle)
힌트문은 SQL 튜닝의 핵심이다. RBO가 항상 최적의 실행을 하는 것은 아니기 때문에 사용자가 더 나은 계획을
알고 있다면, 힌트문을 통해 옵티마이저에게 전달한다.




하지만, 힌트문이 문법적, 의미적으로 틀리게 기술되거나, 잘못된 참조(존재하지 않는 테이블이나 별칭을 사용),
불가능한 액세스 경로를 넣을 경우 힌트문은 무시된다.
Access Paths for the RBO
RBO Path 1: Single Row by Rowid
RBO Path 2: Single Row by Cluster Join
RBO Path 3: Single Row by Hash Cluster Key with Unique or Primary Key
RBO Path 4: Single Row by Unique or Primary Key
RBO Path 5: Clustered Join
RBO Path 6: Hash Cluster Key
RBO Path 7: Indexed Cluster Key
RBO Path 8: Composite Index
RBO Path 9: Single-Column Indexes
RBO Path 10: Bounded Range Search on Indexed Columns
RBO Path 11: Unbounded Range Search on Indexed Columns
RBO Path 12: Sort Merge Join
RBO Path 13: MAX or MIN of Indexed Column
RBO Path 14: ORDER BY on Indexed Column
RBO Path 15: Full Table Scan
[참조문서]
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=364
https://docs.oracle.com/cd/B10500_01/server.920/a96533/rbo.htm#38960
'DATABASE > Oracle' 카테고리의 다른 글
| [DB] Cursor (0) | 2023.01.18 |
|---|---|
| [DB] Function & Procedure & Trigger (Oracle) (0) | 2023.01.14 |
| [DB] PL/SQL 기초 (Oracle) (0) | 2023.01.13 |
| [DB] Table Join (Oracle) (0) | 2023.01.09 |
댓글