DROP INDEX
DROP INDEX — удалить индекс
Синтаксис
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] имя [, ...] [ CASCADE | RESTRICT ]
Описание
Команда DROP INDEX
удаляет существующий индекс из СУБД. Для выполнения этой
команды нужно быть владельцем соответствующего индекса.
Параметры
CONCURRENTLY
Удалить индекс без блокировки параллельных операций выборки, добавления, изменения
и удаления данных в таблице индекса. Обычная команда DROP INDEX
запрашивает на
эту таблицу блокировку ACCESS EXCLUSIVE, блокируя другие обращения к ней до
завершения удаления индекса. С этим параметром команда вместо этого будет ожидать
завершения конфликтующих транзакций.
Есть несколько особенностей, которые следует учитывать при использовании этого
параметра. Можно указать только одно имя индекса, и не поддерживается указание
CASCADE. (Следовательно, индекс, поддерживающий ограничение UNIQUE или
PRIMARY KEY, не может быть удален таким способом.) Кроме того, обычные команды
DROP INDEX
могут выполняться в блоке транзакции, а DROP INDEX CONCURRENTLY
не
может. И наконец, с помощью этого параметра нельзя удалить индексы по
партиционированным таблицам.
На временных таблицах команда DROP INDEX
всегда выполняется неблокирующим
способом, так как другие сеансы не могут обращаться к этим таблицам, а кроме того
неблокирующее удаление индекса менее затратно.
IF EXISTS
Не считать ошибкой, если этот индекс не существует. В этом случае выдается только замечание.
имя
Имя удаляемого индекса (может быть дополнено схемой).
CASCADE
Автоматически удалять объекты, зависящие от этого индекса, и, в свою очередь, все объекты, зависящие от этих объектов (см. раздел Отслеживание зависимостей).
RESTRICT
Отказать в удалении этого индекса, если от него зависят какие-либо объекты. Это поведение по умолчанию.
Примеры
Эта команда удалит индекс title_idx:
DROP INDEX title_idx;
Совместимость
Команда DROP INDEX
является языковым расширением QHB. В
стандарте SQL нет положений для индексов.