본문 바로가기
DB/sql

[Oracle] 옵티마이저(Optimizer)

by 혀끄니 2025. 12. 24.
728x90
  • 옵티마이저란?

- 옵티마이저는 SQL을 가장 효율적으로 실행 할 수 있는 방식을 자동으로 선택하는 DBMS 내부엔진

- SQL을 어떻게 실행해야 가장 적은 비용으로 가장 빠르게 결과를 얻을 수 있는지 판단하는 두뇌역할

- SQL 자체는 절차를 말하지 않고, 어떻게 실행하는가는 옵티마이저의 몫

  • 옵티마이저의 역할

1. 인덱스 사용여부

- 인덱스를 사용할것인지?

- 여러 인덱스 중 어느 것을 선택할 것인지?

- 인덱스 스캔과 풀스캔 어느것이 빠른지?

2. 어떤 조인방식을 사용할지

- Nested Loop Join

- Hash Join

- Sort Merge Join

3. 조인순서를 어떻게 할지

4. 파티션 프루닝 가능판단

5. 별렬 실행 사용여부

  • 옵티마이저 종류

- 현재 모든 DB는 CBO(Cost Based Optimizer) 사용

* 비용기반 옵티마이저(CBO)

- 테이블과 인덱스의 통계정보를 분석

- 예상 비용을 계산

- 가장 낮은 Cost의 실행계획 선택



728x90

'DB > sql' 카테고리의 다른 글

[Oracle] 통계정보(Statistics)  (0) 2025.12.25
[Oracle] 파티션(Partition)  (0) 2025.12.23
이기적SQLD(데이터 모델링)1-1  (0) 2023.10.24
오라클 SQL(PL/SQL 제어문)  (0) 2023.10.23
오라클 SQL(PL/SQL1)  (0) 2023.10.20