Query Transformation Hints
Query Transformation Hints
- EXPAND_GSET_TO_UNION
/*+ EXPAND_GSET_TO_UNION */
- GROUP BY GROUPING SET 혹은 GROUP BY ROLLUP 등과 같은 구문을
포함하는 쿼리에 사용할 수 있다.
- 이 힌트는 기존의 쿼리를 개별적인 그룹 생성 후, UNION ALL 방식으로
실행되게 유도한다.
- FACT_HINT
/*+ FACT (tabl) */
- Star 변형 구문에서 사용되며 해당 테이블이 FACT 테이블로
사용되게 유도한다.
- NO_FACT
/*+ NO_FACT (table) */
- Star 변형 시, 해당 테이블의 FACT 테이블로서의 사용을 방지한다.
- MERGE
/*+ MERGE (table) */
- 각 쿼리의 결과값을 머지 한다.
- 해당 쿼리 내에 GROUP BY 절의 사용이나 SELECT 구문에 DISTINCT가
사용되었을 시, 머지의 실행이 가능할 경우에만 힌트가 실행된다.
- IN과 서브 쿼리의 사용 시, 서브 쿼리의 상위 쿼리 간의
상호 관계가 없을 때에만 머지의 실행이 가능하다.
- 이 힌트는 Cost-Based가 아니다. 따라서 액세스하는 실행 쿼리 블록에
MERGE 힌트가 반드시 명시되어야만 한다. 그렇지 않을 경우
옵티마이저는 다른 실행계획을 수립한다.
- NO_EXPAND
/*+ NO_EXPAND */
- 실행 쿼리 내에 OR 나 WHERE 절의 IN 이 사용되었을 시, Cost-Based
옵티마이저가 쿼리 처리를 위해 OR를 사용한 확장을 사용하는 것을 방지한다.
- 일반적으로 옵티마이저는 위와 같은 경우 OR-확장의 가격이 확장을
사용하지 않는 것보다 적을 시, 확장 방식으로 수행한다.
- NO_MERGE
/*+ NO_MERGE (table) */
- 머지 처리 방식의 사용을 방지한다.
- REWRITE
/*+ REWRITE [ ( [materialized_view] [materialized_view] … ) ] */
- 실행 계획의 가격에 상관없이 Materialized View를 사용하여 쿼리 재생성을 하도록 한다.
- Materialized View를 지정할 시, 지정한 Materialized View의 가격에
상관없이 무조건 쿼리를 재생성을 실행한다.
- Materialized View를 지정하지 않을 시, 오라클은 사용 가능한
모든 Materialized View를 참조하여 그 중 가장 가격이 낮은 Materialized View를 사용하여 쿼리 재생성을 한다.
- Materialized View를 지정하지 않는 힌트의 사용이 권장된다.
- NOREWRITE
/*+ NOREWRITE */
- 해당 쿼리 블록의 쿼리 재생성의 실행을 방지한다.
- QUERY_REWRITE_ENALBE 파라미터에 대해 우선권을 가진다.
- NOREWRITE 힌트의 사용 시, Function-Based 인덱스의 사용이 금지된다.
- STAR_TRANSFORMATION
/*+ STAR_TRANSFORMATION */
- 옵티마이저가 Star 변형 작업에 최적화된 실행 계획을 수립, 실행하도록 한다.
- 힌트를 사용하지 않을 시, 옵티마이저는 일반적인 작업에 최적화된
실행 계획을 수행한다.
- 힌트를 사용하였어도 변형 작업에 맞추어진 실행 계획을 실행한다는
보장은 없다. 다른 일반적인 힌트의 사용과 마찬가지로 비교 분석 후,
오라클의 판단에 따라 다른 실행 계획이 실행될 수 있다.
- USE_CONCAT
/*+ USE_CONCAT */
- WHERE절의 OR 조인을 UNION ALL로 변경하여 수행하게 한다.
- 일반적으로 이러한 변경은 결과값의 병합 수행의 가격이 수행하지 않을 시의 가격보다 낮을 때에만 실행된다.