Having worked with SQLServer for a long time, I’m used to think that clustered table (table with clustered index) is usually a better choice compared to heap table. Now I’m also working with Oracle and I don’t really understand why their tables are heap by default. From my experience I can say that there is a limited number of cases where tables should be heap (again, I mostly dealt with SQLServer).
Does Oracle have a good reason for “forcing” (by forcing I mean that CREATE TABLE without specifying organization index creates heap in contrast to SQLServer which by default creates clustered table) users to use heap tables?
[Update]
Clarification about SQLServer – I might have misused “default” for describing SQL Server behaviour; I’m aware that it creates a clustered index if primary key specified in CREATE TABLE. My point here is that I don’t have to specify PK is clustered.
[/Update]
Also, there are many good articles about clustered tables vs heaps in SQLServer, and I wonder to which extent it can be applied to Oracle.
Any information is greatly appreciated.
Thanks.
I work alot with Oracle and in my experience IOT (= BTree-like) can have a cost which neutralizes or overweights the possible benefit…
“clustered” and IOT/Btree are different beasts in Oracle terminology – I don’t know SQL Server very well but read that “clustered” means something different from what it means in Oracle…
This is more of a case-by-case decision… although I like to stick with the default and optimize as needed…
Some links with information regarding Oracle/Index: