옵티마이저 힌트는 정확하게 사용하는 것이 중요합니다. 오라클 최근 버전에서는 힌트가 올바르게 사용되는지 확인할 수 있는 방법이 있습니다. DBMS_XPLAN 패키지 DISPLAY 계열 함수의 출력 결과 중 Hint Report를 확인하는 것입니다.
Hint Report
Hint Report는 오라클 12c부터 제공하는 정보입니다. 힌트가 잘 사용되는지, 무시되는지, 힌트 오류인지 플래그를 이용해 보여줍니다.
- U – Unused
- N – Unresolved
- E – Error
힌트에 어떤 문제가 있다면 아래와 같이 나타납니다.
Hint Report (identified by operation id / Query Block Name / Object Alias): Total hints for statement: 3 (U - Unused (1)) --------------------------------------------------------------------------- 4 - SEL$5DA710D3 / "T1"@"SEL$2" U - FULL(t1) / hint overridden by another in parent query block - FULL(@sel$2 t1) 5 - SEL$5DA710D3 / "T1"@"SEL$1" - INDEX(t1)
힌트에 문제가 없다면 다음과 같이 플래그 없이 출력됩니다.
Hint Report (identified by operation id / Query Block Name / Object Alias): Total hints for statement: 2 --------------------------------------------------------------------------- 4 - SEL$5DA710D3 / "T1"@"SEL$2" - FULL(t1) 5 - SEL$5DA710D3 / "T1"@"SEL$1" - INDEX(t1)
Hint Report에 표시가 있다면 힌트에 문제가 있다는 것입니다. 실행 계획은 의도한 대로 나타나더라도 힌트 그 자체는 부정확하고 오류나 모순이 있다는 뜻입니다. 특히, 복잡한 쿼리일 수록 쿼리변환(Query Transformation)을 통해 만들어진 최종 쿼리 관점에서 모순이 발생하는 경우가 많습니다.
옵티마이저 힌트를 사용한다면 Hint Report를 참고하여 오류 없이 정확하게 사용하는 것이 중요합니다.