Посказки (хинты или hints) в запросах.

ALL_ROWS Указание оптимизатору на быстрейшее выполнение всего запроса.
Актуально для запросов из процедур(пакетов), для INSERT, UPDATE и DELETE
AND_EQUAL Используйте подсказку AND_EQUAL, когда в одной таблице существует несколько критериев равенства.
select /*+ AND_EQUAL(emp,PK_EMP,EMP_NAME) */ ename , dname
from emp, dept
where emp.deptno = dept.deptno
and ename = 'SMITH'
CACHE Используйте подсказку CACHE для размещения всей таблицы в буферном кэше. Таблица размещается в наиболее часто используемом конце буферного кэша. Эта подсказка применима для небольших таблиц, к которым часто обращаются.
select /*+ CACHE(emp) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
CLUSTER Используйте подсказку CLUSTER для доступа к таблице в кластере без использования индекса.
select /*+ CLUSTER(emp) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
FIRST_ROWS Указание оптимизатору на быстрейшее получение именно первых строк результата, хотя в целом запрос может выполниться медленнее.
Актуально для запросов из приложений, заполняющих в форме большие таблицы.
FULL Используйте подсказку FULL для выполнения полного просмотра таблицы.
select /*+ FULL(emp) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
HASH Используйте подсказку HASH для доступа к таблице в хешированном кластере без
применения индекса.
select /*+ HASH */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
INDEX Используйте подсказку INDEX в качестве указания для Oracle по применению одного из
индексов, определенных в качестве параметров.
select /*+ INDEX(emp,PK_EMP) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
INDEX_ASC (по умолчанию) указывает просмотреть индекс в порядке возрастания
INDEX_DESC указывает просмотреть индекс в порядке убывания
INDEX_COMBINE INDEX_COMBINE вынуждает оптимизатор использовать битовые индексы.
select /*+ INDEX_COMBINE(emp,ENAME) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
NOCACHE Используйте подсказку NOCACHE для размещения блоков таблицы в начале буферного
кэша, чтобы они были меньше подвержены действию алгоритма вытеснения по давности
использования.
select /*+ NOCACHE(emp) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
NOPARALLEL Используйте подсказку NOPARALLEL для отмены применения нескольких серверных
процессов при обслуживании операций на указанной таблице.
select /*+ NOPARALLEL(emp) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
ORDERED Используйте подсказку ORDERED для доступа к таблицам во фразе FROM в порядке их
указания.
select /*+ ORDERED(emp,dept) */ ename,dname
from emp, dept
where emp.deptno - dept.deptno
PARALLEL Используйте подсказку PARALLEL, чтобы затребовать несколько серверных процессов да!
одновременного обслуживания операций на указанной таблице.
select /*+ PARALLEL(emp) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
PUSH_SUBQ PUSH_SUBQ позволяет выполнить оценку подзапросов перед наложением фильтра.
select /*+ PUSH_SUBQ */ ename,dname
from emp, dept where emp.deptno in
(select deptno from dept)
ROWID Используйте подсказку ROWID для доступа к таблице по ROWID.
select /*+ ROWID(emp) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
RULE Указание использовать продукционный оптимизатор (по правилам).
Не стыкуется с другими хинтам. Анализирует запрос с конца, т.е. ведущая таблица должна быть в конце перечня.
select /*+ RULE */ ename, dname
from emp, dept
where emp.deptno=dept.deptno
STAR Подсказка STAR вызывает средство запроса STAR.
select /*+ STAR */ ename, dname
from emp, dept
where emp.deptno=dept.deptno
USE_CONCAT USE CONCAT применяется, если в операторе SQL несколько критериев соединены
оператором OR.
select /*+ USE_CONCAT */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
USE_HASH Используйте подсказку USE_HASH для выполнения хешированного соединения, а не соединения слиянием или соединения вложенными циклами.
select /*+ USE_HASH */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
USE_MERGE Используйте подсказку USE_MERGE для выполнения соединения слиянием, а не соединения вложенными циклами или хешированного соединения.
select /*+ USE_MERGE */ ename,dname
from emp, dept
where emp.deptno = dept.deptno
USE_NL

Используйте подсказку USE_NL для выполнения соединения вложенными циклами
select /*+ USE_NL(emp,dept) */ ename,dname
from emp, dept
where emp.deptno = dept.deptno

Хорошие результаты дает комбинированное употребление хинтов ORDERED, USE_NL и, при необходимости, INDEX

Хостинг от uCoz