Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: problem with a query
When rows are deleted from a table, the index slots are merely marked as "deleted". If the index is on a monotonically increasing data value, such as a sequence number, then the index will grow without bound over time because the deleted slots won't get reused. The periodic rebuild works because it reclaims the space from the deleted rows.
Then why does the performance suddenly jump from minutes to hours, you ask? (This is a guess) As long as the entire index fits in the SGA cache, then performance will be fast because no I/O is necessary. However, once the index grows just beyond the point where it entirely fits in the SGA, then the uncached index blocks must be read from disk - orders of magnitude slower. If this is the case, and you have plenty of memory on the server, then increasing the DB_BLOCK_BUFFER parameter will increase the cache memory and thus decrease the frequency of rebuilds. (An LRU statistics report might confirm this).
John Gasch