Я бы предположил, что автор ссылается на составной индекс, когда говорит о «двухчастном едином индексе». Термин «составной индекс» является гораздо более распространенным способом ссылки на индекс для нескольких столбцов таблицы.
Если у вас есть один составной индекс для двух столбцов, существует только одна структура индекса, которую необходимо поддерживать во время вставки, поэтому накладные расходы на обслуживание индекса не сильно отличаются от накладных расходов на обслуживание одного индекса из одного столбца.
CREATE TABLE t1 (
col1 NUMBER,
col2 NUMBER,
col3 NUMBER
);
CREATE INDEX t1_composite_idx
ON t1( col1, col2 );
С другой стороны, если вы создаете отдельные индексы для каждого столбца по отдельности, Oracle должен поддерживать две отдельные структуры индекса, что примерно вдвое увеличивает объем обслуживания индекса, необходимого
CREATE TABLE t1 (
col1 NUMBER,
col2 NUMBER,
col3 NUMBER
);
CREATE INDEX t1_idx1
ON t1( col1 );
CREATE INDEX t1_idx2
ON t1( col2 );
Я, однако, был бы весьма осторожен с "фактором трех", который цитирует автор. В игру вступает множество переменных, которые не учитываются этим конкретным правилом. Полезно помнить, что добавление индексов сопряжено с потенциально существенными затратами на операции вставки, но гораздо полезнее измерить фактическую стоимость, которую вы налагаете, когда взвешиваете компромиссы для создания другого индекса.
Существуют ли еще виды индексов?
Что касается вашего последнего вопроса - у Oracle довольно много разных типов индексов (особенно если мы считаем составные индексы индексами другого типа). Этот ответ был посвящен исключительно индексам b * -дерева, которые обычно имеют в виду люди, когда ссылаются на «индексы» без квалификаторов. Однако Oracle поддерживает ряд различных типов индексов - индексы дерева b *, растровые индексы, текстовые индексы и т. Д. Он создает индексы больших объектов. Он поддерживает определяемые пользователем расширяемые индексы. И в каждом типе индекса часто есть десятки различных вариантов. Например, вы можете создать индекс b * -дерева на основе функций или индекс соединения растровых изображений, вы можете указать пользовательские лексеры для индекса Oracle Text или определить собственную структуру индекса для своего собственного пользовательского типа.