-
옵티마이저 힌트 & SQL 공유와 재사용DataBase/튜닝 2024. 7. 17. 16:35
1. 힌트란
옵티마이저가 대부분 좋은 선택을 하지만, 완벽하진 않다. SQL이 복잡할수록 실수할 가능성도 크다.
데이터 또는 업무 특성을 활용해 개발자가 직접 더 효율적인 액세스 경로를 찾아낼 수도 있다.
이럴 때 옵티마이저 힌트를 이용해 데이터 엑세스 경로를 바꿀 수 있다.
SELECT /*+ INDEX(A.고객_PK) */ 고객명, 연락처, 주소, 가입일시 FROM 고객 A WHERE 고객ID = '00000008';
힌트의 사용법은 간단하다. 주석 사이에 +기호를 사용하면된다.
힌트의 의미를 다 이해하려면 많은 공부가 필요하다. 사용법은 간단하니 몇가지 주의사항만 지키자
2. 힌트 사용 시 주의사항
- 힌트 안에 인자를 나열할 땐 ,(콤마)를 사용할 수 있지만, 힌트와 힌트 사이에 사용하면 안된다.
- 테이블을 지정할 때 스키마명까지 명시하면 안된다.
- FROM절 테이블명 앞에 ALAS를 지정했다면, 힌트에도 반드시 ALIAS를 사용해야한다.
3. 힌트의 범위
힌트를 사용해 옵티마이저가 특정 경로로만 SQL을 실행하도록 꼼꼼하게 지정할 수도 있고,
몇가지 경로만 사용하고, 나머지는 스스로 판단하도록 만들 수 도 있다.
어떤 방식이 옳은지는 애플리케이션 환경에 달렸다. 통계정보나 실행 환경 변화로 인해 옵티마이저가 가끔 실수하더라도 별 문제가 없는 시스템이라면, 꼼꼼하게 지정할 필요가 없지만, 반대라면 이야기가 다르다!
기왕에 힌트를 사용한 거라면 빈틈없이 기술하는 편이 낫다.
4. 자주 사용하는 힌트 목록
'DataBase > 튜닝' 카테고리의 다른 글
인덱스 튜닝 (1) - 기본 이론 (0) 2024.07.18 여러가지 인덱스 스캔 방식 (0) 2024.07.18 인덱스 기본 (2) - 기본 사용법 (0) 2024.07.17 인덱스 기본(1) - 인덱스 구조 및 탐색 (0) 2024.07.17 데이터 저장 구조 및 I/O 매커니즘 (0) 2024.07.17