Call now: 252-767-6166  
Oracle Training Oracle Support Development Oracle Apps

 E-mail Us
 Oracle Articles
New Oracle Articles

 Oracle Training
 Oracle Tips

 Oracle Forum
 Class Catalog

 Remote DBA
 Oracle Tuning
 Emergency 911
 RAC Support
 Apps Support
 Oracle Support

 SQL Tuning

 Oracle UNIX
 Oracle Linux
 Remote s
 Remote plans
 Application Server

 Oracle Forms
 Oracle Portal
 App Upgrades
 SQL Server
 Oracle Concepts
 Software Support

 Remote S


 Consulting Staff
 Consulting Prices
 Help Wanted!


 Oracle Posters
 Oracle Books

 Oracle Scripts

Don Burleson Blog 






  Oracle Database Tips by Donald Burleson

B-Tree Index

By default, the Oracle creates a b_tree index.  In a b-tree, you walk the branches until you get to the node that has the data you want to use.  In the classic b-tree structure, there are branches from the top that lead to leaf nodes that contain the data.  If I wanted to find the rowid for the number 28 in the b-tree defined in Figure 5.3, I would start at the top or header block.

Is my number greater or less that 50?  Well 28 is less than 50, so I move to the branch marked 25.  Is 28 greater or less that 25?  Since 28 is greater than 25, I move to the leaf node marked 26-49.  I scan this node for the rowid of the number 28.  The key to the b-tree in Figure 5.3 is that I can find any number from one to 100 by reading no more than three nodes. 

The Oracle database implements the b-tree index in a little different manner.  An Oracle b-tree starts with only two nodes, one header and one leaf.  The header contains a pointer to the leaf block and the values stored in the leaf block.  As the index grows leaf bocks are added to the index (Figure 5.4).

To find a specific row, we look at the header to find the range of values in each leaf and then go directly to the leaf node that contains the value we are looking for.  In the index in Figure 5.4, any row can be found by reading two nodes.  Since the header contains only pointers to leaf blocks, a single header node can support a very large number (hundreds) of leaf nodes. 

If the header block fills, then a new header block is established, and the former header node becomes a branch node.  This is called a three level b-tree (Figure 5.5).

In Figure 5.5, you can find any value in any leaf node by reading no more than three blocks.  I can also create a multicolumn index, also called a concatenated or complex index.

SQL> create index sales_keys
  2  on sales (book_key, store_key, order_number); 

Index created.

Here, we created an index called sales_keys on three columns of the sales table.  A multicolumn index can be used by the database but only from the first or lead column.  Our sales_keys index can be used in the following query.

   book_key = 'B103';

Note that the lead column of the index is the book_key, so the database can use the index in the query above.  I can also use the sales_keys index in the queries below.

   book_key = 'B103'
   store_key = 'S105'
   order_number = 'O168';

However, the database cannot use that index in the following query because the WHERE clause does not contain the index lead column.

   store_key = 'S105'
   order_number = 'O168';

Also, note that in the query below, the database can answer the query from the index and so will not access the table at all.

   store_key = 'S105'
   book_key = 'B108'; 

As you can see, b-tree indexes are very powerful.  You must remember that a multicolumn index cannot skip over columns, so the lead index column must be in the WHERE clause filters.  Oracle has used b-tree indexes for many years, and they are appropriate from most of your indexing needs.  However, the Oracle database provides specialized indexes that can provide additional capabilities; the bit-mapped index and the function-based index.

Get the Complete
Oracle SQL Tuning Information 

The landmark book "Advanced Oracle SQL Tuning  The Definitive Reference"  is filled with valuable information on Oracle SQL Tuning. This book includes scripts and tools to hypercharge Oracle 11g performance and you can buy it for 30% off directly from the publisher.
Oracle Training at Sea
oracle dba poster

Follow us on Twitter 
Oracle performance tuning software 
Oracle Linux poster


Burleson is the American Team

Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals.  Feel free to ask questions on our Oracle forum.

Verify experience! Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications.

Errata?  Oracle technology is changing and we strive to update our BC Oracle support information.  If you find an error or have a suggestion for improving our content, we would appreciate your feedback.  Just  e-mail:  

and include the URL for the page.


Burleson Consulting

The Oracle of Database Support

Oracle Performance Tuning

Remote DBA Services


Copyright © 1996 -  2020

All rights reserved by Burleson

Oracle ® is the registered trademark of Oracle Corporation.