Oracle автоматически создает уникальный индекс для столбца (или набора столбцов) при создании ограничения UNIQUE. Индекс используется при применении ограничения.
Oracle также автоматически создает уникальный индекс для столбца (или набора столбцов) при создании ограничения PRIMARY KEY. Этот индекс также используется для принудительного применения ограничения. Существует небольшая, но некоторая разница между ограничением PRIMARY KEY и ограничением UNIQUE.
Кроме того, когда столбец (или набор столбцов) часто используется для объединения пары таблиц, должна быть указана связь внешнего ключа. Для этого указанные столбцы должны быть первичным ключом в ссылочной таблице, что, в свою очередь, означает, что в этой ссылочной таблице будет уникальный индекс (первичный ключ).
Кроме того, когда конкретный столбец (или набор столбцов) часто используется в предложениях WHERE, имеет смысл создать индекс, уникальный или иной. Столбцы с особенно низким количеством элементов (небольшое количество уникальных значений по отношению к общему количеству строк), индексы BITMAP могут быть полезными. Плюсы и минусы индексов BITMAP могут быть долгим обсуждением.
Порядок столбцов в многостолбцовых индексах должен быть тщательно продуман. Во-первых, многостолбцовый индекс совсем не работает, как отдельные одностолбцовые индексы в одних и тех же столбцах, но Oracle редко (если вообще вообще, особенно без подсказок) использует более одного индекса для одного запроса (индексы BITMAP являются возможное исключение). Если у вас обычно есть столбцы A, B и C в предложении WHERE, вы можете захотеть индексировать по A, B и C. Однако, если вы также часто используете A и C в предложении WHERE, без B, то вы бы вероятно, вы хотите заказать столбцы в вашем индексе как A, C, B. Такой индекс также можно использовать, когда в предложении WHERE присутствует только A. Проще говоря, Oracle может использовать подмножество столбцов в индексе только с помощью префикса индекса, а не случайного ассортимента столбцов в индексе.
Также важно отметить, что чем больше у вас индексов в таблице, тем медленнее будет запись в эту таблицу. Просто рассмотрите всю работу Oracle по обновлению таблицы и всех связанных с ней индексов. Индексы BITMAP могут оказать еще большее влияние.
В качестве заключительного замечания, EXPLAIN PLAN - ваш друг. Если вы обнаружите, что часто выполняемые запросы выполняют полное сканирование таблиц в больших таблицах, индекс может быть в порядке.