1. /*+ALL_ROWS*/
Es zeigt, dass für Anweisungsblöcke die kostenbasierte Optimierungsmethode ausgewählt wird und der beste Durchsatz erzielt wird, um den Ressourcenverbrauch zu minimieren.
Zum Beispiel:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
2. /*+FIRST_ROWS*/
Es zeigt, dass für Anweisungsblöcke die kostenbasierte Optimierungsmethode ausgewählt wird und die beste Antwortzeit erzielt wird, um den Ressourcenverbrauch zu minimieren.
Zum Beispiel:
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
3. /*+AUSWÄHLEN*/
Es zeigt an, dass die Optimierungsmethode auf den Kosten basiert, wenn statistische Informationen über die Zugriffstabelle im Datenwörterbuch vorhanden sind, und der beste Durchsatz erzielt wird, wenn keine statistischen Informationen über die Zugriffstabelle im Datenwörterbuch vorhanden sind Die Optimierungsmethode basiert auf den Regelkosten.
Zum Beispiel:
SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMMPMS WHERE EMP_NO='SCOTT';
4. /*+REGEL*/
Gibt die Auswahl regelbasierter Optimierungsmethoden für Anweisungsblöcke an.
Zum Beispiel:
SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMMPMS WHERE EMP_NO='SCOTT';
5. /*+FULL(TABELLE)*/
Gibt an, wie ein globaler Scan für die Tabelle ausgewählt wird.
Zum Beispiel:
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';
6. /*+ROWID(TABLE)*/
Die Eingabeaufforderung zeigt deutlich an, dass auf die angegebene Tabelle basierend auf der ROWID zugegriffen wird.
Zum Beispiel:
SELECT /*+ROWID(BSEMMPMS)*/ * FROM BSEMMPMS WHERE ROWID>='AAAAAAAAAAAAAAA'
AND EMP_NO='SCOTT';
7. /*+CLUSTER(TABELLE)*/
Die Eingabeaufforderung zeigt deutlich an, dass für die angegebene Tabelle die Zugriffsmethode Cluster-Scan ausgewählt ist, die nur für Cluster-Objekte gültig ist.
Zum Beispiel:
SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS
WHERE DPT_NO='TEC304' AND BSEMMPMS.DPT_NO=BSDPTMS.DPT_NO;
8. /*+INDEX(TABLE INDEX_NAME)*/
Gibt die Scanmethode für Tabellenauswahlindizes an.
Zum Beispiel:
SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX, WEIL ES WENIGE MÄNNLICHE BSEMPMS GIBT */ FROM BSEMPMS WHERE SEX='M';
9. /*+INDEX_ASC(TABLE INDEX_NAME)*/
Gibt eine Scanmethode an, die Indizes für die Tabelle in aufsteigender Reihenfolge auswählt.
Zum Beispiel:
SELECT /*+INDEX_ASC(BSEMMPMS PK_BSEMPMS) */ FROM BSEMMPMS WHERE DPT_NO='SCOTT';
10. /*+INDEX_COMBINE*/
Wählen Sie den Bitmap-Zugriffspfad für die angegebene Tabelle aus. Wenn in INDEX_COMBINE kein Index als Parameter angegeben ist, wird die boolesche Kombination von Bitmap-Indizes ausgewählt.
Zum Beispiel:
SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS
WO SAL<5000000 UND HIREDATE
11. /*+INDEX_JOIN(TABLE INDEX_NAME)*/
Die Eingabeaufforderung weist den Optimierer explizit an, den Index als Zugriffspfad zu verwenden.
Zum Beispiel:
SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE
VON BSEMMPMS WO SAL<60000;
12. /*+INDEX_DESC(TABLE INDEX_NAME)*/
Gibt eine Scanmethode an, die Indizes für die Tabelle in absteigender Reihenfolge auswählt.
Zum Beispiel:
SELECT /*+INDEX_DESC(BSEMMPMS PK_BSEMPMS) */ FROM BSEMMPMS WHERE DPT_NO='SCOTT';
13. /*+INDEX_FFS(TABLE INDEX_NAME)*/
Führen Sie einen schnellen vollständigen Indexscan für die angegebene Tabelle anstelle eines vollständigen Tabellenscans durch.
Zum Beispiel:
SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';
14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/
Fordert Sie auf, den Ausführungsplan explizit auszuwählen und die Scans mehrerer einspaltiger Indizes zu kombinieren.
Zum Beispiel:
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='SCOTT' AND DPT_NO='TDC306';
15. /*+USE_CONCAT*/
Konvertieren Sie die OR-Bedingung nach WHERE in der Abfrage in eine kombinierte Abfrage von UNION ALL.
Zum Beispiel:
SELECT /*+USE_CONCAT*/ * FROM BSEMMPMS WHERE DPT_NO='TDC506' AND SEX='M';
16. /*+NO_EXPAND*/
Für die OR- oder IN-LIST-Abfrageanweisungen nach WHERE verhindert NO_EXPAND, dass sie basierend auf dem Optimierer erweitert werden.
Zum Beispiel:
SELECT /*+NO_EXPAND*/ * FROM BSEMMPMS WHERE DPT_NO='TDC506' AND SEX='M';
17. /*+NOWRITE*/
Abfrageumschreibungsvorgänge für Abfrageblöcke sind verboten.
18. /*+REWRITE*/
Ansichten können als Parameter übergeben werden.
19. /*+MERGE(TABELLE)*/
Kann die verschiedenen Abfragen der Ansicht entsprechend zusammenführen.
Zum Beispiel:
SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO
,AVG(SAL) AS AVG_SAL FROM BSEMMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO
AND A.SAL>V.AVG_SAL;
20. /*+NO_MERGE(TABLE)*/
Ansichten, die zusammengeführt werden können, werden nicht mehr zusammengeführt.
Zum Beispiel:
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 AND A.SAL>V.AVG_SAL;
21. /*+BESTELLT*/
Entsprechend der Reihenfolge, in der die Tabellen in FROM erscheinen, bewirkt ORDERED, dass ORACLE in dieser Reihenfolge eine Verbindung zu ihnen herstellt.
Zum Beispiel:
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(TABLE)*/
Verknüpft die angegebene Tabelle mit der Zeilenquelle des verschachtelten Joins und verwendet dabei die angegebene Tabelle als innere Tabelle.
Zum Beispiel:
SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
23. /*+USE_MERGE(TABLE)*/
Verbindet die angegebene Tabelle mithilfe eines Merge-Sortier-Joins mit anderen Zeilenquellen.
Zum Beispiel:
SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
24. /*+USE_HASH(TABLE)*/
Verknüpft die angegebene Tabelle mithilfe eines Hash-Joins mit anderen Zeilenquellen.
Zum Beispiel:
SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
25. /*+DRIVING_SITE(TABLE)*/
Erzwingt die Ausführung der Abfrage in einer Tabelle, die sich von dem von ORACLE ausgewählten Speicherort unterscheidet.
Zum Beispiel:
SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;
26. /*+LEADING(TABELLE)*/
Verwenden Sie die angegebene Tabelle als erste Tabelle in der Join-Reihenfolge.
27. /*+CACHE(TABELLE)*/
Beim Durchführen eines vollständigen Tabellenscans kann der CACHE-Hinweis den Abrufblock der Tabelle am zuletzt verwendeten Ende der am wenigsten aktuellen Listen-LRU im Puffercache platzieren.
SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
28. /*+NOCACHE(TABELLE)*/
Beim Durchführen eines vollständigen Tabellenscans kann der CACHE-Hinweis den Abrufblock der Tabelle am zuletzt verwendeten Ende der am wenigsten aktuellen Listen-LRU im Puffercache platzieren.
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
29. /*+APPEND*/
Das direkte Einsetzen in das Ende des Tisches kann die Geschwindigkeit verbessern.
Zum Beispiel:
/*+append*/ in Test1 einfügen, * aus Test4 auswählen;
30. /*+NOAPPEND*/
Startet reguläre Einfügungen, indem der Parallelmodus für die Lebensdauer der Einfügeanweisung gestoppt wird.
Zum Beispiel:
füge /*+noappend*/ in test1 ein, wähle * aus