1. /*+모든 행*/
명령문 블록에 대해 비용 기반 최적화 방법이 선택되었으며, 자원 소비를 최소화하기 위해 최상의 처리량을 얻음을 보여줍니다.
예를 들어:
EMP_NO='SCOTT'인 BSEMPMS에서 /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN을 선택합니다.
2. /*+첫번째 행*/
명령문 블록에 대해 비용 기반 최적화 방법이 선택되었으며, 자원 소모를 최소화하기 위한 최상의 응답 시간을 얻음을 보여줍니다.
예를 들어:
EMP_NO='SCOTT'인 BSEMPMS에서 /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN을 선택합니다.
3. /*+선택*/
이는 데이터 사전에 액세스 테이블에 대한 통계 정보가 있는 경우 비용을 기준으로 최적화 방법을 적용하고 데이터 사전에 액세스 테이블에 대한 통계 정보가 없으면 최상의 처리량을 얻음을 나타냅니다. 최적화 방법은 규칙 비용을 기반으로 합니다.
예를 들어:
SELECT /*+CHOOSE*/ EMP_NO='SCOTT'인 BSEMMPMS에서 EMP_NO,EMP_NAM,DAT_IN;
4. /*+규칙*/
명령문 블록에 대한 규칙 기반 최적화 방법 선택을 나타냅니다.
예를 들어:
SELECT /*+ RULE */ EMP_NO='SCOTT'인 BSEMMPMS에서 EMP_NO,EMP_NAM,DAT_IN;
5. /*+전체(테이블)*/
테이블에 대한 글로벌 스캔을 선택하는 방법을 나타냅니다.
예를 들어:
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';
6. /*+ROWID(테이블)*/
프롬프트는 지정된 테이블이 ROWID를 기반으로 액세스된다는 것을 명확하게 나타냅니다.
예를 들어:
SELECT /*+ROWID(BSEMMPMS)*/ * BSEMMPMS에서 ROWID>='AAAAAAAAAAAAAAAA'
AND EMP_NO='스콧';
7. /*+클러스터(테이블)*/
프롬프트는 지정된 테이블에 대해 클러스터 스캔의 액세스 방법이 선택되었음을 명확하게 나타내며 이는 클러스터 개체에만 유효합니다.
예를 들어:
SELECT /*+CLUSTER */ BSEMPMS,BSDPTMS에서 BSEMPMS.EMP_NO,DPT_NO
여기서 DPT_NO='TEC304' 및 BSEMMPMS.DPT_NO=BSDPTMS.DPT_NO;
8. /*+INDEX(테이블 인덱스_NAME)*/
테이블 선택 인덱스의 스캔 방법을 나타냅니다.
예를 들어:
SELECT /*+INDEX(BSEMPMS SEX_INDEX) SEX_INDEX를 사용하세요. BSEMPMS가 거의 없기 때문입니다. */ SEX='M'인 BSEMPMS에서;
9. /*+INDEX_ASC(테이블 인덱스_NAME)*/
테이블의 인덱스를 오름차순으로 선택하는 스캔 방식을 나타냅니다.
예를 들어:
SELECT /*+INDEX_ASC(BSEMMPMS PK_BSEMPMS) */ DPT_NO='SCOTT'인 BSEMMPMS에서;
10. /*+INDEX_COMBINE*/
지정된 테이블에 대한 비트맵 액세스 경로를 선택합니다. INDEX_COMBINE에 매개변수로 인덱스가 제공되지 않으면 비트맵 인덱스의 부울 조합이 선택됩니다.
예를 들어:
SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * BSEMPMS에서
SAL<5000000 및 고용 날짜
11. /*+INDEX_JOIN(테이블 인덱스_NAME)*/
프롬프트는 인덱스를 액세스 경로로 사용하도록 최적화 프로그램에 명시적으로 지시합니다.
예를 들어:
SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE
SAL<60000인 BSEMMPMS에서;
12. /*+INDEX_DESC(테이블 인덱스_NAME)*/
테이블의 인덱스를 내림차순으로 선택하는 스캔 방식을 나타냅니다.
예를 들어:
SELECT /*+INDEX_DESC(BSEMMPMS PK_BSEMPMS) */ DPT_NO='SCOTT'인 BSEMMPMS에서;
13. /*+INDEX_FFS(테이블 인덱스_이름)*/
전체 테이블 스캔 대신 지정된 테이블에 대해 빠른 전체 인덱스 스캔을 수행합니다.
예를 들어:
SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * DPT_NO='TEC305'인 BSEMPMS에서;
14. /*+ADD_EQUAL 테이블 INDEX_NAM1,INDEX_NAM2,...*/
실행 계획을 명시적으로 선택하고 여러 단일 열 인덱스의 스캔을 결합하라는 메시지를 표시합니다.
예를 들어:
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * EMP_NO='SCOTT' AND DPT_NO='TDC306'인 BSEMPMS에서;
15. /*+사용_CONCAT*/
쿼리에서 WHERE 뒤의 OR 조건을 UNION ALL의 결합 쿼리로 변환합니다.
예를 들어:
SELECT /*+USE_CONCAT*/ * DPT_NO='TDC506' AND SEX='M'인 BSEMMPMS에서;
16. /*+NO_EXPAND*/
WHERE 뒤의 OR 또는 IN-LIST 쿼리 문의 경우 NO_EXPAND는 최적화 프로그램을 기반으로 확장되는 것을 방지합니다.
예를 들어:
SELECT /*+NO_EXPAND*/ * DPT_NO='TDC506' AND SEX='M'인 BSEMMPMS에서;
17. /*+지금 쓰기*/
쿼리 블록에 대한 쿼리 재작성 작업은 금지됩니다.
18. /*+다시 쓰기*/
뷰는 매개변수로 전달될 수 있습니다.
19. /*+병합(테이블)*/
이에 따라 뷰의 다양한 쿼리를 병합할 수 있습니다.
예를 들어:
SELECT /*+MERGE(V) */ BSEMPMS A에서 A.EMP_NO,A.EMP_NAM,B.DPT_NO (DPT_NO 선택
,AVG(SAL) AS AVG_SAL FROM BSEMMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO
그리고 A.SAL>V.AVG_SAL;
20. /*+NO_MERGE(테이블)*/
병합할 수 있는 뷰는 더 이상 병합되지 않습니다.
예를 들어:
SELECT /*+NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELECT DPT_NO,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO 그리고 A.SAL>V.AVG_SAL;
21. /*+주문됨*/
FROM에 테이블이 나타나는 순서에 따라 ORDERED를 사용하면 ORACLE이 해당 순서대로 테이블에 연결됩니다.
예를 들어:
SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;
22. /*+USE_NL(테이블)*/
지정된 테이블을 내부 테이블로 사용하여 지정된 테이블을 중첩 조인의 행 소스와 조인합니다.
예를 들어:
SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSEMPMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
23. /*+USE_MERGE(테이블)*/
병합 정렬 조인을 사용하여 지정된 테이블을 다른 행 소스와 조인합니다.
예를 들어:
SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * BSEMPMS,BSDPTMS에서 BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
24. /*+USE_HASH(테이블)*/
해시 조인을 사용하여 지정된 테이블을 다른 행 소스와 조인합니다.
예를 들어:
SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
25. /*+DRIVING_SITE(테이블)*/
ORACLE이 선택한 위치와 다른 테이블에 대한 쿼리를 강제로 실행합니다.
예를 들어:
SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;
26. /*+선행(테이블)*/
지정된 테이블을 조인 순서의 첫 번째 테이블로 사용합니다.
27. /*+캐시(테이블)*/
전체 테이블 스캔을 수행할 때 CACHE 힌트는 버퍼 캐시에서 가장 최근에 사용된 목록 LRU의 끝에 테이블의 검색 블록을 배치할 수 있습니다.
SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ BSEMPMS에서 EMP_NAM;
28. /*+NOCACHE(테이블)*/
전체 테이블 스캔을 수행할 때 CACHE 힌트는 버퍼 캐시에서 가장 최근에 사용된 목록 LRU의 끝에 테이블의 검색 블록을 배치할 수 있습니다.
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ BSEMPMS에서 EMP_NAM;
29. /*+추가*/
테이블 끝에 직접 삽입하면 속도가 향상될 수 있습니다.
예를 들어:
test1에 /*+append*/를 삽입합니다. test4에서 *를 선택합니다.
30. /*+추가 없음*/
insert 문의 수명 동안 병렬 모드를 중지하여 일반 삽입을 시작합니다.
예를 들어:
/*+noappend*/를 test1에 삽입하고 *에서 선택