1. /*+ВСЕ_СТРОКИ*/
Он показывает, что для блоков операторов выбран метод оптимизации на основе затрат, и достигается наилучшая пропускная способность для минимизации потребления ресурсов.
Например:
ВЫБЕРИТЕ /*+ВСЕ+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
2. /*+ПЕРВЫЕ_СТРОКИ*/
Он показывает, что для блоков операторов выбран метод оптимизации на основе затрат и получено наилучшее время отклика для минимизации потребления ресурсов.
Например:
ВЫБЕРИТЕ /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
3. /*+ВЫБРАТЬ*/
Это указывает на то, что если в словаре данных есть статистическая информация о таблице доступа, метод оптимизации будет основан на стоимости и будет получена наилучшая пропускная способность, если в словаре данных нет статистической информации о таблице доступа; метод оптимизации будет основан на стоимости правила;
Например:
ВЫБЕРИТЕ /*+ВЫБРАТЬ*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMMPMS WHERE EMP_NO='SCOTT';
4. /*+ПРАВИЛО*/
Указывает выбор методов оптимизации на основе правил для блоков операторов.
Например:
SELECT /*+ ПРАВИЛО */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMMPMS WHERE EMP_NO='SCOTT';
5. /*+ПОЛНЫЙ(ТАБЛИЦА)*/
Указывает, как выбрать глобальное сканирование таблицы.
Например:
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';
6. /*+ROWID(ТАБЛИЦА)*/
В приглашении четко указано, что доступ к указанной таблице осуществляется на основе ROWID.
Например:
SELECT /*+ROWID(BSEMMPMS)*/ * FROM BSEMMPMS WHERE ROWID>='AAAAAAAAAAAAAAAA'
И EMP_NO='СКОТТ';
7. /*+КЛАСТЕР(ТАБЛИЦА)*/
В подсказке четко указано, что для указанной таблицы выбран метод доступа сканирования кластера, действительный только для объектов кластера.
Например:
ВЫБРАТЬ /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS
ГДЕ DPT_NO='TEC304' И BSEMMPMS.DPT_NO=BSDPTMS.DPT_NO;
8. /*+ИНДЕКС(ИМЯ_ИНДЕКСА ТАБЛИЦЫ)*/
Указывает метод сканирования индексов выбора таблицы.
Например:
SELECT /*+INDEX(BSEMPMS SEX_INDEX) ИСПОЛЬЗУЙТЕ SEX_INDEX, ПОТОМУ ЧТО ЕСТЬ НЕСКОЛЬКО BSEMPMS */ FROM BSEMPMS WHERE SEX='M';
9. /*+ИНДЕКС_ASC(ИМЯ_ИНДЕКСА ТАБЛИЦЫ)*/
Указывает метод сканирования, который выбирает индексы в таблице в порядке возрастания.
Например:
SELECT /*+INDEX_ASC(BSEMMPMS PK_BSEMPMS) */ FROM BSEMMPMS WHERE DPT_NO='SCOTT';
10. /*+INDEX_COMBINE*/
Выберите путь доступа к растровому изображению для указанной таблицы. Если в качестве параметра в INDEX_COMBINE не указан индекс, будет выбрана логическая комбинация индексов растрового изображения.
Например:
ВЫБЕРИТЕ /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS
ГДЕ ПРОДАЖА<5000000 И ДАТА АРЕНДА
11. /*+INDEX_JOIN(ИМЯ ТАБЛИЦЫ INDEX_)*/
Приглашение явно указывает оптимизатору использовать индекс в качестве пути доступа.
Например:
SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE
ИЗ БСЕММПМС, ГДЕ SAL<60000;
12. /*+INDEX_DESC(ИМЯ_ИНДЕКСА ТАБЛИЦЫ)*/
Указывает метод сканирования, который выбирает индексы в таблице в порядке убывания.
Например:
SELECT /*+INDEX_DESC(BSEMMPMS PK_BSEMPMS) */ FROM BSEMMPMS WHERE DPT_NO='SCOTT';
13. /*+INDEX_FFS(ИМЯ_ИНДЕКСА ТАБЛИЦЫ)*/
Выполните быстрое полное сканирование индекса указанной таблицы вместо полного сканирования таблицы.
Например:
SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';
14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/
Предлагает явно выбрать план выполнения и объединить сканирования нескольких одностолбцовых индексов.
Например:
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='SCOTT' AND DPT_NO='TDC306';
15. /*+USE_CONCAT*/
Преобразуйте условие OR после WHERE в запросе в комбинированный запрос UNION ALL.
Например:
SELECT /*+USE_CONCAT*/ * FROM BSEMMPMS WHERE DPT_NO='TDC506' AND SEX='M';
16. /*+NO_EXPAND*/
Для операторов запроса OR или IN-LIST после WHERE NO_EXPAND предотвратит их расширение на основе оптимизатора.
Например:
SELECT /*+NO_EXPAND*/ * FROM BSEMMPMS WHERE DPT_NO='TDC506' AND SEX='M';
17. /*+СЕЙЧАС*/
Операции перезаписи запроса в блоках запроса запрещены.
18. /*+ПЕРЕСИСАТЬ*/
Представления можно передавать в качестве параметров.
19. /*+ОБЪЕДИНИТЬ(ТАБЛИЦА)*/
Возможность соответствующим образом объединить различные запросы представления.
Например:
SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO
,AVG(SAL) AS AVG_SAL ИЗ BSEMMPMS B ГРУППА ПО DPT_NO) V ГДЕ A.DPT_NO=V.DPT_NO
И А.САЛ>В.АВГ_САЛ;
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 И А.САЛ>В.АВГ_САЛ;
21. /*+ЗАКАЗА*/
В соответствии с порядком, в котором таблицы появляются в FROM, ORDERED заставляет ORACLE подключаться к ним в этом порядке.
Например:
ВЫБЕРИТЕ /*+ORDERED*/ A.COL1,B.COL2,C.COL3 ИЗ ТАБЛИЦЫ 1 A, TABLE2 B, TABLE3 C, ГДЕ A.COL1=B.COL1 И B.COL1=C.COL1;
22. /*+USE_NL(ТАБЛИЦА)*/
Соединяет указанную таблицу с источником строк вложенного соединения, используя указанную таблицу в качестве внутренней таблицы.
Например:
ВЫБЕРИТЕ /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS ГДЕ BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
23. /*+USE_MERGE(ТАБЛИЦА)*/
Соединяет указанную таблицу с другими источниками строк, используя соединение сортировки слиянием.
Например:
SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE 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.
Например:
ВЫБЕРИТЕ /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS ГДЕ BSEMPMS.DPT_NO=DEPT.DPT_NO;
26. /*+ВЕДУЩИЙ(ТАБЛИЦА)*/
Используйте указанную таблицу в качестве первой таблицы в порядке соединения.
27. /*+КЭШ(ТАБЛИЦА)*/
При выполнении полного сканирования таблицы подсказка CACHE может поместить блок извлечения таблицы в самый последний использованный конец самого последнего списка LRU в буферном кеше. Например:
SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
28. /*+NOCACHE(ТАБЛИЦА)*/
При выполнении полного сканирования таблицы подсказка CACHE может поместить блок извлечения таблицы в самый последний использованный конец самого последнего списка LRU в буферном кеше. Например:
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
29. /*+ДОБАВИТЬ*/
Вставка непосредственно в конец таблицы может повысить скорость.
Например:
вставить /*+append*/ в test1 select * from test4 ;
30. /*+NOAPPEND*/
Запускает регулярные вставки, останавливая параллельный режим на время существования оператора вставки.
Например:
вставьте /*+noappend*/ в test1, выберите * из