QUESTION POSED ON: 21 June 2005 We have a column used to hold a 'Y' or NULL value. There can be one to
hundreds of values set to 'Y' in a table with hundreds of thousands to
a several million unique primary keys. This column is to "mark" rows
temporarily for use by core transaction components external to Oracle.
We've been using Oracle's standard B-tree indexing, and also tried the
bitmap. Does the act of setting the column/value to NULL instigate a
delete from an index, thus leaving a slot that will remain unused until
reindexing?
Generally, can an index help in this situation? If so, what is the
right kind of index configuration? Or is there a better solution to making access to all "marked" rows, and unmarking them, as fast as possible?
>
EXPERT RESPONSE
You are correct that Oracle does not index a row in which all index
columns are null. Indexing can certainly help in this situation.
What you've done so far makes sense. I assume that you have
determined whether a B-tree or bitmap index gives you the best
performance. Have you considered the use of column histograms with a
B-tree index? If properly used, these can supply crucial information
to the optimizer on whether to use an index. In your case, you'd
gather the histograms after all of the columns were marked, but before
you ran the processes that use the external components.
Search and Browse the Expert Answer Center Search and browse more than 25,000 question and
answer pairs from more than 250 TechTarget industry experts.
TechTarget provides enterprise IT professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective IT purchase decisions and managing their organizations' IT projects - with its network of technology-specific Web sites, events and magazines.