The problem that rebuilding indexes is attempting to resolve is sparseness.
Lots of folks think that indexes "become unbalanced" over time and that is
the reason for rebuild, but Oracle B*Tree indexes are always balanced.

Sparseness is the symptom, however, not the cause.  The problem with
sparsely-populated index structures is that it takes more I/O (both logical
and ultimately physical) to process all four operations performed on
indexes:  unique scan, range scan, full scan, and fast full scan.

What are the causes of sparseness?  As Mladen indicated, deletions are one;
index entries are not removed -- they are simply made unused and available
for reuse.

The other cause of sparseness is monotonically-ascending data values (i.e.
values generated from a sequence or timestamp, etc).  Oracle B*Tree indexes
are optimized for randomly-generated data values and when a block in an
index fills, it splits rather than overflows.  This split activity will
cause the index to gradually be comprised of half-filled blocks.  If the
data is not monotonically-ascending, then backfill will occur and the
half-full blocks in the index will ultimately fill.  If the data is
monotonically-ascending, then the blocks will stay half-full forever.

For the sparseness caused by deletion, rebuilds are often the only answer,
unless the application can be "persuaded" to reuse data values in the
indexed columns.  :-)

For the sparseness caused by monotonically-ascending data values, either
rebuilds can be used periodically to improve the situation or REVERSE-key
indexes can be used to solve the problem permanently.  However, be aware
that using REVERSE-key indexes comes with restrictions.



on 9/22/03 1:04 AM, Mladen Gogala at [EMAIL PROTECTED] wrote:

> There is a Metalink note 77574.1 entitled "Guidelines on When to Rebuild a B-
> Tree Index" which explains how to use "validate structure"  and index_stats
> table. It is far too scientific to ever put into the script. Explanation
> for the rule of thumb is simple: if number of index blocks is big that means
> that the number of deleted entries is likely to be big, so let's rebuild it.
> As I said, rebuilding indexes is not often necessary and is usually done for
> all the wrong reasons. Quality of the rule of thumb, therefore, doesn't really
> matter.
> 
> On 2003.09.22 03:19, Prem Khanna J wrote:
>> Read ur interesting reply for the query Mladen and learnt
>> a new "rule of thumb" from u today.
>> 
>> i sent the doc. to Raju ONLY adn NOT to the list.
>> it's just the body of the mail u r seeing there.
>> 
>> Regards,
>> Jp.
>> 
>> 22-09-2003 15:49:40, Mladen Gogala <[EMAIL PROTECTED]> wrote:
>> 
>>> Attachments are stripped from the list messages.
>> 
>>> On 2003.09.22 02:24, Prem Khanna J wrote:
>>>> Hi Raju,
>>>> Check the doc. i have attached.
>> 
>> 
>> 
>> --
>> Please see the official ORACLE-L FAQ: http://www.orafaq.net
>> --
>> Author: Prem Khanna J
>>   INET: [EMAIL PROTECTED]
>> 
>> Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
>> San Diego, California        -- Mailing list and web hosting services
>> ---------------------------------------------------------------------
>> To REMOVE yourself from this mailing list, send an E-Mail message
>> to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
>> the message BODY, include a line containing: UNSUB ORACLE-L
>> (or the name of mailing list you want to be removed from).  You may
>> also send the HELP command for other information (like subscribing).
>> 
> 
> --
> Mladen Gogala
> Oracle DBA

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Tim Gorman
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to