Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Index-Organized Table experiences

Re: Index-Organized Table experiences

From: Stephane Faroult <>
Date: Wed, 28 Apr 2004 20:58:45 +0200
Message-ID: <>

Daniel Fink wrote:
> We are looking to implement IOTs for a couple of intersection
> entities in a 10g db. I would like to hear from those brave
> enough to actually use IOTs what is the good, the bad and the
> ugly.
> example:
> Employee (heap table)
> Project (heap table)
> There is a many-to-many relationship between the tables (1
> employee can be on many projects and 1 project can have many
> employees).
> The emp_project table is the intersection entity containing
> emp_id and project_id as the only columns. There are FK
> constraints on each of the columns. The combination of emp_id
> and project_id is unique.
> This situation *sounds* like the right one for an IOT,
> otherwise we would have 1 table and 2 indexes (1 on each
> column).
> My main concerns are:
> 1) Integrity/performance
> 2) Locking behavior (do I need to adhere to the traditional
> "index all foreign keys" rule to prevent excessive locking?)
> 3) Any especially nasty gotchas
> Thanks,
> Daniel


  I have mostly had disappointing experiences with IOTs. I especially remember a case where one of the tables (around 3 million rows) looked like the perfect case-study for IOTs. First tests were rather encouraging, fewer LIOs, etc. However, the cruel reality of timing contradicted the stats. The application was a little weird (investment book valuation, biggest table involved 15 million rows, thankfully partitioned, reports of death concurrently run by two scores of users). What we noticed with IOTs is that the initially good throughput was diminishing over time. An indiscreet peek at V$BH revealed that the IOT was taking more and more place into the SGA, letting fewer and fewer space to the rest of the data.
My feeling is that IOTs, being first and foremost indices, tend to be a bit 'sticky' in memory and are bad memory-mates of tables (or partitions) which are scanned.


Stephane Faroult
Oriole Software
Please see the official ORACLE-L FAQ:
To unsubscribe send email to:
put 'unsubscribe' in the subject line.
Archives are at
FAQ is at
Received on Wed Apr 28 2004 - 13:59:37 CDT

Original text of this message