From: Vikas Agnihotri <onlyforposting@yahoo.com>
Newsgroups: comp.databases.oracle.server
Subject: Function-based indexes
Date: Wed, 04 Apr 2001 09:31:47 -0400
Lines: 26
Message-ID: <p68mctk798k7jeqeavihe8thvr06n1n7kj@4ax.com>
Reply-To: vikasa@despammed.com
NNTP-Posting-Host: ras01-basnj224-125.fast.net (209.92.81.125)
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Trace: fu-berlin.de 986391368 5119598 209.92.81.125 (16 [80970])
X-Newsreader: Forte Agent 1.8/32.548


I can see that FBI (!) would be useful in the classic case of case
insensitive string matching 

where upper(column)=upper('input string')

To serve the above query, one would 
create index on table (upper(column))

But if I know the case in which a particular data element is stored
and were to use a
 where column='This Way'

would it still use the FBI?

Of course, I am assuming that you cannot have a FBI and any other
index (btree or bitmap) on the same column?

In general, how exactly does the FBI work internally? The docs mention
that it stores the data using a 'expression tree' and not a 'btree'.
What does this mean exactly?  Does Oracle evaluate the function and
actually store the upper-cased values in the index?

If it is not a btree, arent there any leaf nodes? How is the index
organized then?

Thanks...

