문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| oracle:hint [2018/02/19 09:24] – [B. Access Methods 로써의 Hints] taekgu | oracle: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 / | SELECT / | ||
| 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를 선택하고, | 용도 : Data Dictionary가 해당테이블에 대해 통계정보를 가지고 있다면 Optimizer는 Cost-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 / | SELECT / | ||
| 줄 67: | 줄 64: | ||
| === 3.CLUSTER === | === 3.CLUSTER === | ||
| 용도 : 지정된 테이블Access에 Cluster Scan 유도. Cluster된 Objects에만 적용가능. | 용도 : 지정된 테이블Access에 Cluster Scan 유도. Cluster된 Objects에만 적용가능. | ||
| - | 예 : | ||
| <code sql> | <code sql> | ||
| SELECT / | SELECT / | ||
| 줄 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 / | SELECT / | ||
| 줄 109: | 줄 104: | ||
| / | / | ||
| </ | </ | ||
| - | === 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; | ||
| + | </ | ||
| + | == LEADING === | ||
| + | <code sql> | ||
| + | select /*+ leading(b) */ * | ||
| + | from a, b | ||
| + | where a.a=b.a; | ||
| + | </ | ||
| + | <code sql> | ||
| + | select /*+ LEADING(d) USE_NL(e) */ | ||
| + | e.ename, d.dname | ||
| + | from mydept1 d, myemp1 e | ||
| + | where e.deptno = d.deptno; | ||
| + | </ | ||
| + | <code sql> | ||
| + | select /*+ LEADING(d) USE_HASH(e) */ | ||
| + | | ||
| + | from mydept1 d, myemp1 e | ||
| + | where e.deptno = d.deptno; | ||
| + | </ | ||
| + | <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; | ||
| </ | </ | ||
| === 2.STAR === | === 2.STAR === | ||