중급Oracle 전용
옵티마이저 (Optimizer)
SQL을 어떤 순서로 어떻게 실행할지 결정하는 데이터베이스의 엔진
정의
왜 중요한가?
SQL 튜닝은 결국 옵티마이저가 좋은 실행계획을 고르도록 돕는 일. 통계가 부정확하거나, 컬럼에 함수를 씌우거나, 데이터 분포가 편향되면 옵티마이저가 잘못된 계획을 선택해 SQL이 느려진다. 통계 정보 갱신과 SARGable 조건 작성이 옵티마이저를 돕는 기본기.
틀리기 쉬운 포인트
예시
-- 통계 정보 갱신 (테이블 단위) EXEC DBMS_STATS.GATHER_TABLE_STATS('SCHEMA_NAME', 'TABLE_NAME'); -- 옵티마이저 모드 확인 SHOW PARAMETER optimizer_mode;성능 포인트
!느린 SQL의 70% 이상은 옵티마이저가 실수해서 발생한다. 가장 흔한 원인은 통계 부정확. DBMS_STATS로 정기 갱신하라.