Presented By
www.orienit.com
 Hints give specific information that we
know about our data and application.
 A way to override the default query
optimization in the DBMS
 Influence the execution plan of query
www.orienit.com
 Oracle optimizer may not always choose
the best execution plan
 Using hints may improve the performance
by changing the execution plan oracle
takes.
www.orienit.com
 Hints can be used in the Select, Delete, and
Update clauses.
 In each statement, the hint goes directly
after the Select, Delete, or Update
keyword. A few hints use Insert.
 Hints are placed in the /*+ */ tag, where
the hint goes after the + sign
 Ex: SELECT /*+ ALL_ROWS */ From…
www.orienit.com
 Approach hints
 Access hints
 Join hints
 Misc. hints
www.orienit.com
 ALL_ROWS: Minimizes total resource
consumption. Results will be returned
only after all processing has been
completed
 FIRST_ROWS(n): Minimized response
time, or minimal resource usage to return
the first n rows.
www.orienit.com
 FULL(table): Chooses a full table scan for
the table, even if there is an index available.
 INDEX(table [index [index]...]): Chooses an
Index scan for the table.
www.orienit.com
 CIS Department has far more males than
females
 SELECT /*+ FULL(s) */ id, name
FROM Student s
WHERE sex = ‘m’;
 SELECT /*+ Index(s sex_index) */ id, name
FROM Student s
WHERE sex = ‘f’;
www.orienit.com
 ORDERED: tables are joined in the order in
which they appear in the FROM clause.
 LEADING(table): specified table is the first
table used in the join order.
 USE_HASH(table [table] …): Tables are
joined using a hash join. Smaller table is
used to make a hash table on join key. The
larger table is scanned using hash table to
find joined rows.
www.orienit.com
 USE_NL(table [table]…): Joins tables using
nested loops join, using specified table as
inner join. For every row in outer table, oracle
accesses every row in inner table.
 USE_MERGE(table [table]…): Joins tables
using a sort-merge join. Sorted list are made
and then merged together. Best if tables are
already sorted.
www.orienit.com
 APPEND: Data is appended to the end of table,
rather then using existing space.
 CACHE(table): Blocks received are placed at
the most recently used end of the LRU list in
the buffer cache when a full table scan is
preformed.
 NOCACHE(table): Blocks received are placed
at the least recently used end of the LRU list in
the buffer cache.
www.orienit.com
 Oracle documentation at:
http://oracle.cis.ksu.edu/oradocs/index.htm
www.orienit.com
Beier hints

Beier hints

  • 1.
  • 2.
     Hints givespecific information that we know about our data and application.  A way to override the default query optimization in the DBMS  Influence the execution plan of query www.orienit.com
  • 3.
     Oracle optimizermay not always choose the best execution plan  Using hints may improve the performance by changing the execution plan oracle takes. www.orienit.com
  • 4.
     Hints canbe used in the Select, Delete, and Update clauses.  In each statement, the hint goes directly after the Select, Delete, or Update keyword. A few hints use Insert.  Hints are placed in the /*+ */ tag, where the hint goes after the + sign  Ex: SELECT /*+ ALL_ROWS */ From… www.orienit.com
  • 5.
     Approach hints Access hints  Join hints  Misc. hints www.orienit.com
  • 6.
     ALL_ROWS: Minimizestotal resource consumption. Results will be returned only after all processing has been completed  FIRST_ROWS(n): Minimized response time, or minimal resource usage to return the first n rows. www.orienit.com
  • 7.
     FULL(table): Choosesa full table scan for the table, even if there is an index available.  INDEX(table [index [index]...]): Chooses an Index scan for the table. www.orienit.com
  • 8.
     CIS Departmenthas far more males than females  SELECT /*+ FULL(s) */ id, name FROM Student s WHERE sex = ‘m’;  SELECT /*+ Index(s sex_index) */ id, name FROM Student s WHERE sex = ‘f’; www.orienit.com
  • 9.
     ORDERED: tablesare joined in the order in which they appear in the FROM clause.  LEADING(table): specified table is the first table used in the join order.  USE_HASH(table [table] …): Tables are joined using a hash join. Smaller table is used to make a hash table on join key. The larger table is scanned using hash table to find joined rows. www.orienit.com
  • 10.
     USE_NL(table [table]…):Joins tables using nested loops join, using specified table as inner join. For every row in outer table, oracle accesses every row in inner table.  USE_MERGE(table [table]…): Joins tables using a sort-merge join. Sorted list are made and then merged together. Best if tables are already sorted. www.orienit.com
  • 11.
     APPEND: Datais appended to the end of table, rather then using existing space.  CACHE(table): Blocks received are placed at the most recently used end of the LRU list in the buffer cache when a full table scan is preformed.  NOCACHE(table): Blocks received are placed at the least recently used end of the LRU list in the buffer cache. www.orienit.com
  • 12.
     Oracle documentationat: http://oracle.cis.ksu.edu/oradocs/index.htm www.orienit.com