Индекс-таблица — это таблица, которая физически построена в виде двоичного дерева относительно своего первичного ключа. Начиная с Oracle8, существует возможность определить таблицу, которая одновременно является и собственным индексом, что устраняет ведение двух отдельных структур. Как правило, это таблицы с короткими строками, обращение к которым всегда производится или по первичному ключу, или полным сканированием. Данные в таких таблицах отсортированы по значениям столбца первичного ключа и сохраняются так, как если бы вся таблица целиком содержалась в одном индексе.
Чтобы минимизировать объем работы, необходимой для активного управления индексами следует использовать индекс-таблицу лишь в тех случаях, когда данные очень статичны. Не рекомендуется использовать индекс-таблицы, если строки имеют относительно большую длину, например, свыше 20% от размера блока. В этом случае лучшим выбором является использование обычных таблиц и индексов.
Для создания индекс-таблиц в команде CREATE TABLE указываются ключевые слова ORGANIZATION INDEX.
Пример создания индексно-организованной таблицы:
CREATE TABLE TabIndex
(At1 NUMBER(4) PRIMARY KEY,
At2 VARCHAR(40)
)
ORGANIZATION INDEX;
Существуют некоторые ограничения при работе с индекс-таблицами. Наиболее важно, что их строки не имеют идентификаторов (ROWID), поэтому не могут быть созданы никакие дополнительные индексы, за исключением обязательного первичного ключа.
Следует отметить, что индекс-таблицы активно используются и в других СУБД, например, Microsoft SQL Server по умолчанию создает именно такие таблицы.