DROP INDEX — 인덱스 삭제
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] 이름
[, ...] [ CASCADE | RESTRICT ]
DROP INDEX
명령은 현재 데이터베이스에서
해당 인덱스를 지운다. 인덱스는 해당 소유자만 지울 수 있다.
CONCURRENTLY
이 옵션을 사용하면, 인덱스 삭제 작업을 할 때도,
이 인덱스를 사용하는 테이블의 자료 조작 및 검색이 가능하다. 일반적으로
DROP INDEX
명령은 해당 테이블을
ACCESS EXCLUSIVE
모드로 잠근다. 이 모드는
다른 세션 작업에서 해당 테이블을 사용할 경우 그 모든 작업은
대기 상태로 처리하는 모드다. 이 옵션은 이런 대기 상태를 만들지 않는다.
이 옵션을 사용할 때는 다음 사항을 꼭 지켜야한다. 먼저 삭제 명령은
반드시 하나의 인덱스만 사용해야한다. 또한 CASCADE
옵션과 함께 사용할 수 없다. (이런 제약 사항 때문에,
UNIQUE
인덱스나, PRIMARY KEY
제약조건으로
만들어진 인덱스는 이 옵션을 지정해서 삭제할 수 없다.) 또한
일반적인 DROP INDEX
명령은 트랜잭션 내에서
사용할 수 있으나, 이 옵션을 사용하면 트랜잭션 내에서는
사용할 수 없다. 하위 파티션 테이블의 인덱스도 이 옵션을 사용해서
삭제할 수 없다.
한 세션에서만 사용하는
임시 테이블 대상 인덱스에 대해서도 DROP INDEX
명령은 독립 작업 (non-concurrent) 으로 진행된다. 이렇게
처리하는 것이 더 효율적이다.
IF EXISTS
해당 인덱스가 없어도 오류를 내지 않고, 알림 메시지만 보여준다.
name
삭제 하려는 (스키마 이름을 포함 할 수도 있는) 인덱스 이름.
CASCADE
해당 인덱스와 의존성 관계가 있는 모든 객체도 함께 삭제한다. 물론, 삭제될 다른 객제와 관계된 또 다른 객체들도 함께 삭제 한다. (5.14절 참조).
RESTRICT
해당 인덱스와 의존성 관계가 있는 객체가 있으면 작업을 중지한다. 이 옵션이 기본값이다.
title_idx
이름의 인덱스를 지우려면:
DROP INDEX title_idx;
DROP INDEX
명령은 PostgreSQL
확장 기능이다. 표준 SQL에서는 인덱스에 대한 규정이 없다.