Oracle Table Types – Professional Notes with Q&A by BishoyiFy
Oracle Table Types – Professional Notes
Tables
are the fundamental storage structures in Oracle databases. They store
data in a row and column format and are used to persist information.
Oracle
supports different types of tables, each designed for specific purposes and
performance requirements. The four main types of tables are:
1. Heap-Organized Tables (Default)
- These are the default
type of tables in Oracle.
- Data is stored in no
particular order. New rows are inserted into the first available free
space.
- No ordering is enforced,
which makes insert operations fast, but data retrieval can be
slower unless indexes are used.
- Ideal for general-purpose
data storage.
📌 Note: When a new row is inserted, Oracle
places it wherever space is available — no sorting is applied.
2. Index-Organized Tables (IOT)
- In IOTs, the table data
is stored in a B-tree index structure based on the primary key.
- Rows are physically
stored in sorted order according to the primary key.
- Insert operations may be slower due to the overhead of
maintaining order.
- However, select queries
based on primary key are very efficient.
- Useful in scenarios where read
performance and key-based lookups are critical.
3. External Tables
- External tables allow Oracle
to access data stored outside the database, such as flat files
(e.g., CSV).
- They are read-only
and cannot be updated or deleted.
- Commonly used in ETL
processes, data warehousing, and for loading large volumes
of data.
- SQL can be used to query the
data directly without loading it into Oracle.
4. Temporary Tables
- Used to store temporary
session or transaction-specific data.
- Two types of Global
Temporary Tables:
- ON COMMIT DELETE ROWS – Data is deleted after
each transaction.
- ON COMMIT PRESERVE ROWS – Data persists for the
duration of the session.
- Ideal for storing
intermediate results, especially in PL/SQL blocks or batch processes.
- Data in temporary tables is private
to each session.
🔍 Why Use Index Organized Tables?
Index Organized Tables offer several advantages over traditional
heap-organized tables:
·
✅ Faster Access via
Primary Key
Since the primary key and the actual data are stored together,
Oracle does not need to read the index and then the table separately.
This improves retrieval speed for key-based lookups.
·
✅ Reduced Storage
Requirements
There is no duplication of primary key columns between the
table and the index — as they are one and the same. This results in better
space efficiency.
·
✅ Efficient Sorting and
Range Scans
Because data is stored in order of the primary key, queries
involving sorted data or range conditions
(e.g., BETWEEN
, <
, >
)
perform better.
🛠️ Creating Index Organized Tables
To create an Index Organized Table:
·
You must define a PRIMARY KEY
constraint.
·
Use the clause ORGANIZATION INDEX
in the CREATE TABLE
statement.
💡 Example:
CREATE
TABLE employees_iot (
emp_id NUMBER,
emp_name VARCHAR2(
100),
dept_id NUMBER,
CONSTRAINT emp_pk
PRIMARY KEY (emp_id)
) ORGANIZATION INDEX;
✅ Advantages of Index Organized Tables
1. Sorted
Storage:
Rows are stored in sorted order of primary key, improving
performance for range-based queries.
2. Uniqueness
Enforcement:
Oracle automatically enforces primary key or unique
constraints using the index structure.
3. Improved
Performance:
o
Reduced logical I/O due to single
structure access.
o
Ideal for applications with frequent
key-based access.
❌ Disadvantages / Limitations
1. Primary
Key is Mandatory:
An IOT must have a unique primary key defined.
2. Limited
Indexing:
You cannot create bitmap indexes on IOTs, and secondary
indexes behave differently compared to heap tables.
3. No
Table Partitioning:
IOTs cannot be partitioned, which limits scalability for very
large datasets.
✅ Key Differences Overview
Table Type |
Storage Location |
Row Ordering |
Key Features |
Heap-Organized |
Inside
database blocks |
Unordered |
Default
type, fast inserts |
Index-Organized |
Index
structure |
Sorted
by PK |
Fast
lookups, slower inserts |
External |
Outside
Oracle DB |
N/A |
Read-only,
used for external data |
Temporary |
Private
session memory |
N/A |
Data
removed after session/transaction |
🔍 Interview Questions and
Real-World Q&A on Index Organized Tables (IOT)
✅ Conceptual Questions
Q1. What
is an Index Organized Table (IOT)? How is it different from a Heap Organized
Table?
A:
An IOT stores table data in a B-tree index structure sorted by the primary
key, whereas a heap-organized table stores rows in no particular order.
In an IOT, data is physically organized based on the primary key, eliminating
the need for a separate index scan and table scan.
Q2. What
are the key benefits of using Index Organized Tables?
A:
- Faster access for primary
key-based queries.
- Less storage due to no
duplication of key in table and index.
- Better performance for range
queries or sorting.
- Useful in high read, low
update workloads.
Q3. When should
you use IOTs in a real-world application?
A:
Use IOTs when:
- The table is frequently
accessed using the primary key.
- You want to reduce
logical I/Os for lookups.
- You are storing reference
data (e.g., country codes, account types).
- You want faster range
scans, such as finding rows between certain dates or IDs.
Example:
In a banking system, an account summary table that is always queried by ACCOUNT_ID could be made IOT to improve performance.
Q4. Can
we create secondary indexes on IOTs?
A:
Yes, secondary indexes can be created on IOTs. However, they behave
differently — they store the logical rowid (primary key) instead of a
physical rowid, so lookup from secondary index to data still uses the primary
key internally.
Q5. Why
can't IOTs be partitioned?
A:
IOTs are tightly coupled to the B-tree index structure which maintains a strict
order by primary key. This makes traditional partitioning incompatible.
However, Oracle introduced IOT partitioning in later versions (12c and
onward) under specific conditions.
🔧 Real-World / Scenario-Based
Questions
Q6. You
have a customer master table accessed mostly by CUSTOMER_ID. Would you use an IOT or a heap table? Why?
A:
I would use an IOT since:
- Queries are primarily based
on the primary key (CUSTOMER_ID).
- IOT provides faster
access and better storage efficiency.
- It reduces index overhead as
no separate index is needed for PK.
Q7. A
developer complains their IOT insert operations are slow. Why might that
happen?
A:
Insert operations in IOTs can be slower because:
- Rows need to be placed in
order according to the primary key.
- B-tree balancing overhead increases with
frequent inserts.
- Possible contention if many
sessions are inserting in the same key range.
Solution: Consider:
- Batch inserts.
- Using heap tables if
insert performance is more critical than read.
Q8. How
do secondary indexes behave in IOTs differently than in heap tables?
A:
- In heap tables, secondary
indexes use physical rowids.
- In IOTs, they use the primary
key as a logical rowid, which adds overhead during retrieval because
Oracle needs to traverse via PK.
Q9. Can
we convert a heap-organized table into an IOT?
A:
No direct ALTER
TABLE command
exists for conversion. You must:
- Create a new IOT
table.
- Use INSERT INTO new_iot SELECT *
FROM old_heap;
- Drop the old table if
needed.
Q10. What
are some limitations of IOTs that developers should be aware of?
A:
- Must have a primary key.
- No table partitioning
(unless using Oracle 12c+ features).
- Bitmap indexes are not supported.
- Slower for frequent
inserts/updates compared to heap tables.
💡 Bonus Expert-Level Question
Q11. How
do IOTs help in reducing chaining and row migration?
A:
Because IOTs store rows in primary key order and compactly within
the B-tree leaf blocks, they naturally reduce row chaining and migration
that are common in heap tables during updates or inserts. This also leads to
fewer block reads during queries.
0 Comments