본문 바로가기

DB/Oracle

[Oracle] Oracle 힌트절 7가지

CBO(Cost Based Optimizer, 비용 기반 옵티마이저) 방식에서 옵티마이저는 주어진 환경(통계정보, SQL문) 하에서 최적의 실행계획(PLAN)을 제공한다. 그런데 잘못된 SQL문이나 부적황한 통계정보로 인하여 엉뚱한 실행계획을 제공할 때도 간혹 있다고 한다. 이때 힌트절을 통해 잘못된 실행 계획을 바로잡을 수 있다. 

 

옵티마이저는 개발자가 사용하는 힌트절을 무조건 수용하지는 않는다. 개발자가 터무니없는 힌트절을 사용하고자 한다면 옵티마이저는 무시할 것이다.

SELECT  /*+ [힌트절] */ 
		~
FROM	TEST

SQL문에서 힌트절은 주석문 안에 표시한다. 그래서 잘못된 힌트절로 인하여 에러를 리턴하는 일은 없다. 단지 힌트절의 내용대로 적용되지 않을 뿐이다.

 

1. 접근 순서를 결정하는 힌트절

  • ORDERED : FROM 절에 나열된 테이블 순서대로 접근한다.(SQL문에 종속적)
  • LEADING : 테이블 접근 순서를 명시적으로 표현한다.(SQL문에 독립적)

2. 접근 방법을 결정하는 힌트절

  • USE_NL : NESTED LOOP JOIN 방식으로 조인하도록 유도한다.(순차적인 접근 방법)
  • USE_HASH : HASH JOIN 방식으로 조인하도록 유도한다.(해시 함수를 이용한 접근 방법)

3. 자원 사용을 결정하는 힌트절

  • INDEX : 인덱스를 통한 ACCESS PATH 유도한다.
  • FULL : 테이블을 FULL SCAN 한다.
  • PARALLEL : 병렬 처리를 통하여 성능을 높인다.

 

 

출처 : 

https://dataonair.or.kr/db-tech-reference/d-lounge/expert-column/?mod=document&uid=52368 

https://exmemory.tistory.com/44