Добавление столбцов в существующий индекс в Oracle - PullRequest
15 голосов
/ 05 декабря 2011

У меня относительно большая таблица (81M строк) и индекс на ней.

Я хочу добавить столбец к существующему индексу.

Я искал его в Google, но не смог найти способ.

Я где-то прочитал , что единственный способ добавить столбец в индекс - это удалить его и создать заново.

Однако, здесь написано Обычная практика - добавлять столбцы в существующий индекс. (Хотя автор этого не рекомендует.)

Итак, возможно ли добавить столбцы в существующий индекс и, если возможно, это хорошая практика?

1 Ответ

16 голосов
/ 05 декабря 2011

Невозможно добавить новый столбец в существующий индекс без удаления и повторного создания индекса.

Когда Джонатан Льюис говорит о «добавлении столбца в существующий индекс», он говорит об удалениисуществующий индекс и создание нового индекса.Обратите внимание, что в его примере «исходный индекс» и «модифицированный индекс» перечислены с помощью оператора CREATE INDEX.В этом примере нет операторов ALTER INDEX, которые добавили бы новый столбец без удаления старого столбца.

Хорошая идея удаления и повторного создания индекса с дополнительным столбцом, зависит от ряда факторов.,Как отмечает Джонатан Льюис, существуют различные ситуации, когда добавление дополнительных столбцов влияет на фактор кластеризации индекса и приводит к более низкой производительности некоторых существующих запросов.Не зная ничего о вашей системе или индексе, о котором мы говорим, советовать невозможно.

...