14 мая 2011 г.

oracle: Удаление индексов

Чтобы иметь возможность удалять индексы, индекс должен находиться в вашей схеме, или если он находить в другой схеме, то пользователю необходима системная привилегия – DROP ANY INDEX.

Основные причины удаления индекса:

   - Индекс больше не требуется
   - Приложение не использует индекс при запросе данных
   - Индекс стал недействительным и требуется его удалить перед перестроением
   - Индекс сильно фрагментирован, и перед перестройкой его необходимо удалить
   - Индекс не обеспечивает ожидаемого повышения производительности при запросах к связанной с ним таблице. Например, таблица маленькая или в ней много строк, но мало элементов поиска

После удаления индекса все экстенты его сегмента возвращаются в табличное пространство и становятся доступными для использования другими объектами.

В зависимости от способа создания индекса, создан ли он явно оператором CREATE INDEX, или неявно при определении ограничений целостности, зависит и способ его удаления. 

Если индекс создан через CREATE INDEX, его можно удалить, используя команду DROP INDEX, как показано в примере:

DROP INDEX EVENT_NO;

Для удаления индекса связанного с ограничением целостности необходимо удалить само ограничение или отключить его. 

Нельзя удалить индексы, связанные с ограничением целостности – UNIQUE или PRIMARY KEY.