DROP INDEX

DROP INDEX — удалить индекс

Синтаксис

DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] имя [, ...] [ CASCADE | RESTRICT ]

Описание

Команда DROP INDEX удаляет существующий индекс из базы данных. Для выполнения этой команды нужно быть владельцем соответствующего индекса.

Параметры

CONCURRENTLY

Это указание позволяет удалить индекс без блокировки одновременных операций отбора, добавления, изменения и удаления данных в таблице индекса. Обычная команда DROP INDEX запрашивает исключительную блокировку на таблицу, блокируя другие обращения к ней до тех пор, пока удаление индекса не будет завершено. При использовании же данного параметра команда вместо этого будет ожидать завершения конфликтующих транзакций.

Есть несколько особенностей, которые следует учитывать при использовании этого параметра. В команде можно указать только одно имя индекса; также не поддерживается указание 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 нет положений для индексов.

См. также

CREATE INDEX