사용자 도구

사이트 도구


oracle:hint

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
oracle:hint [2018/02/19 09:24] – [B. Access Methods 로써의 Hints] taekguoracle:hint [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1
줄 5: 줄 5:
 Goal : Best Throughput Goal : Best Throughput
 용도 : 전체 RESOURCE 소비를 최소화 시키기 위한 힌트. Cost-Based 접근방식. 용도 : 전체 RESOURCE 소비를 최소화 시키기 위한 힌트. Cost-Based 접근방식.
-예 : <code sql>+<code sql>
 SELECT /*+ALL_ROWS */ SELECT /*+ALL_ROWS */
 EMPNO,ENAME EMPNO,ENAME
줄 25: 줄 25:
 Group 함수 Group 함수
 Distinct Distinct
-예 : <code sql>+<code sql>
 SELECT /*+FIRST_ROWS */ SELECT /*+FIRST_ROWS */
 EMPNO,ENAME EMPNO,ENAME
줄 34: 줄 34:
 Goal : Acess되는 테이블에 통계치 존재여부에 따라 Optimizer로 하여금 Rule-Based Approach와 Cost-Based Approach 중 하나를 선택할 수 있게 한다. Goal : Acess되는 테이블에 통계치 존재여부에 따라 Optimizer로 하여금 Rule-Based Approach와 Cost-Based Approach 중 하나를 선택할 수 있게 한다.
 용도 : Data Dictionary가 해당테이블에 대해 통계정보를 가지고 있다면 Optimizer는 Cost-Based Approach를 선택하고, 그렇지 않다면 Rule-Based Approach를 선택한다. 용도 : Data Dictionary가 해당테이블에 대해 통계정보를 가지고 있다면 Optimizer는 Cost-Based Approach를 선택하고, 그렇지 않다면 Rule-Based Approach를 선택한다.
-예 : 
 <code sql> <code sql>
 SELECT /*+CHOOSE */ SELECT /*+CHOOSE */
줄 43: 줄 42:
 === 4.RULE === === 4.RULE ===
 용도 : Rule-Based 최적화를 사용하기위해. 용도 : Rule-Based 최적화를 사용하기위해.
-예 : 
 <code sql> <code sql>
 SELECT /*+RULE */ SELECT /*+RULE */
줄 54: 줄 52:
 === 1.FULL === === 1.FULL ===
 용도 : 해당테이블의 Full Table Scan을 유도. 용도 : 해당테이블의 Full Table Scan을 유도.
-예 : 
 <code sql> <code sql>
 SELECT /*+FULL(EMP) */ SELECT /*+FULL(EMP) */
줄 67: 줄 64:
 === 3.CLUSTER === === 3.CLUSTER ===
 용도 : 지정된 테이블Access에 Cluster Scan 유도. Cluster된 Objects에만 적용가능. 용도 : 지정된 테이블Access에 Cluster Scan 유도. Cluster된 Objects에만 적용가능.
-예 : 
 <code sql> <code sql>
 SELECT /*+CLUSTER(EMP) */ SELECT /*+CLUSTER(EMP) */
줄 95: 줄 91:
 여러개의 인덱스가 지정되면 Optimizer가 각 Index의 Scan시 Cost를 분석 한 후 최소비용이 드는 Index사용. 경우에 따라 Optimizer는 여러 Index를 사용한 후 결과를 Merge하는 Acees방식도 선택. 여러개의 인덱스가 지정되면 Optimizer가 각 Index의 Scan시 Cost를 분석 한 후 최소비용이 드는 Index사용. 경우에 따라 Optimizer는 여러 Index를 사용한 후 결과를 Merge하는 Acees방식도 선택.
 Index가 지정되지 않으면 Optimizer는 테이블의 이용가능한 모든 Index에 대해 Scan Cost를 고려 후 최저비용이 드는 Index Scan을 선택한다. Index가 지정되지 않으면 Optimizer는 테이블의 이용가능한 모든 Index에 대해 Scan Cost를 고려 후 최저비용이 드는 Index Scan을 선택한다.
-예 : 
 <code sql> <code sql>
 SELECT /*+INDEX(EMP EMPNO_INDEX) */ SELECT /*+INDEX(EMP EMPNO_INDEX) */
줄 109: 줄 104:
 /*+INDEX_COMBINE(table index) */ /*+INDEX_COMBINE(table index) */
 </code> </code>
-=== 10.index_desc ===+=== 10.INDEX_DESC ===
 용도 : 지정된 테이블의 지정된 Index를 이용 Descending으로 Scan 하고자 할 때 사용. 용도 : 지정된 테이블의 지정된 Index를 이용 Descending으로 Scan 하고자 할 때 사용.
 <code sql> <code sql>
줄 135: 줄 130:
 용도 : FROM절에 기술된 테이블 순서대로 JOIN이 일어나도록 유도. 용도 : FROM절에 기술된 테이블 순서대로 JOIN이 일어나도록 유도.
 /*+ORDERED */ /*+ORDERED */
-예 : 
 <code sql> <code sql>
 SELECT /*+ORDERED */ SELECT /*+ORDERED */
줄 142: 줄 136:
 WHERE TAB1.COL1=TAB2.COL1 WHERE TAB1.COL1=TAB2.COL1
 AND TAB2.COL1=TAB3.COL1; AND TAB2.COL1=TAB3.COL1;
 +</code>
 +== LEADING ===
 +<code sql>
 +select /*+ leading(b) */ *
 +  from a, b
 + where a.a=b.a;
 +</code>
 +<code sql>
 +select /*+ LEADING(d) USE_NL(e) */ 
 +      e.ename, d.dname 
 +  from mydept1 d, myemp1 e 
 + where e.deptno = d.deptno;
 +</code>
 +<code sql>
 +select /*+ LEADING(d) USE_HASH(e) */ 
 +       e.ename, d.dname 
 +  from mydept1 d, myemp1 e 
 + where e.deptno = d.deptno;
 +</code>
 +<code sql>
 +SELECT /*+ LEADING(E) USE_NL(D) */ E.ENAME, D.DNAME
 +  FROM EMP E, DEPT D
 + WHERE E.DEPTNO = D.DEPTNO;
 +
 +SELECT /*+ ORDERED USE_NL(D) */ E.ENAME, D.DNAME
 +  FROM EMP E, DEPT D
 + WHERE E.DEPTNO = D.DEPTNO;
 </code> </code>
 === 2.STAR === === 2.STAR ===
oracle/hint.1519032294.txt.gz · 마지막으로 수정됨: 2025/04/15 10:05 (바깥 편집)