SELECT Statement Hints
An SQL Hint is a type of comment added to a Select, Insert, Update or Delete SQL statement. The hint passes instructions to the optimizer as a suggested execution plan for the SQL statement.
Hints:
Optimizer Mode ALL_ROWS Cost-based optimiser FIRST_ROWS(n) Cost-based optimiser, return the first n rows most efficiently CHOOSE Choose between the rule-based and cost-based RULE Rule-based optimiser Index and Cluster Hints AND_EQUAL (table index [index] [index]) Merge scans on several single-column indexes CLUSTER(table) Choose a cluster scan (for clusters only) FULL(table) Full table scan HASH(table) Hash scan (for clusters only) INDEX(table index..) Index scan for the table NO_INDEX(table index..) Don't choose an index scan for the table INDEX_ASC(table index..) Index scan & where appropriate scan ascending INDEX_DESC(table index..) Index scan & where appropriate scan decending INDEX_COMBINE(table index..) Bitmap index scan for the table INDEX_FFS(table index..) Fast full index scan ROWID Join Order Hints ORDERED Join tables in the order in which they appear in the WHERE clause. ORDERED_PREDICATES Preserve the order of predicate evaluation, except where used as an index key STAR Joins DRIVING_SITE HASH_SJ Hash semi-join (Exists subquery) MERGE_SJ Sort merge semi-join (Exists subquery) NL_SJ Nested loop semi-join (Exists subquery) LEADING(table) Use the table as the first table in the join order. USE_HASH USE_MERGE USE_NL Parallel Execution Hints PARALLEL(table int|DEFAULT...) Desired number of concurrent servers for a parallel operation NOPARALLEL Override a PARALLEL specification in the table clause PARALLEL_INDEX(table index int|DEFAULT...) Parallelize index range scans for partitioned indexes. PQ_DISTRIBUTE(table, outer_dist inner_dist) Specify how joined rows should be distributed among query servers NOPARALLEL_INDEX Avoid a parallel index scan Query Transformation Hints EXPAND_GSET_TO_UNION NO_EXPAND Do not consider expanding OR or IN-List FACT(table) Consider the hinted table a fact table NOFACT(table) Don't consider the hinted table a fact table MERGE(table) Merge a view definition into the accessing statement complex merging of subqueries is not normally considered by the optimiser NO_MERGE Do not consider merging views REWRITE NOREWRITE Disable query rewrite for the query block (disables function-based indexes) STAR_TRANSFORMATION USE_CONCAT Other Hints APPEND Enable direct-path INSERTs NOAPPEND Enable conventional INSERTs CACHE (table) Cache in most recently used end of the LRU NOCACHE (table) Cache in least recently used end of the LRU (default) CURSOR_SHARING_EXACT DYNAMIC_SAMPLING NESTED_TABLE_GET_REFS UNNEST NO_UNNEST Turn off unnesting for specific subquery blocks. PUSH_PRED NO_PUSH_PRED Prevent pushing a join predicate into the view PUSH_SUBQ NO_PUSH_SUBQ Evaluate the non-merged subquery last.
Use any of the above hints /*+ like this */
e.g.
SELECT /*+ some_hint */ column FROM my_table;
UPDATE /*+ some_hint */ my_table SET column = value;
INSERT /*+ some_hint */ INTO my_table value,value ;
Life is like a 10 speed bicycle. Most of us have gears we never use.
- C. Schultz
Related Commands:
Outer
Joins
An online SQL Tutorial
SQL reference books
DELETE
EXPLAIN PLAN
INSERT
SELECT
TRUNCATE
UPDATE
DBMS_LOCK
DBMS_SQL
Related Views:
DBA_SNAPSHOTS ALL_SNAPSHOTS USER_SNAPSHOTS DBA_ALL_TABLES ALL_ALL_TABLES USER_ALL_TABLES DBA_TABLES ALL_TABLES USER_TABLES TAB DBA_VIEWS ALL_VIEWS USER_VIEWS DICTIONARY DICT_COLUMNS