ALTER INDEX

ALTER INDEX — 인덱스 정의 바꾸기

요약

ALTER INDEX [ IF EXISTS ] 이름 RENAME TO 새이름
ALTER INDEX [ IF EXISTS ] 이름 SET TABLESPACE 테이블스페이스이름
ALTER INDEX 이름 ATTACH PARTITION 인덱스이름
ALTER INDEX 이름 [ NO ] DEPENDS ON EXTENSION 확장모듈이름
ALTER INDEX [ IF EXISTS ] 이름 SET ( 저장옵션_매개변수명 [= ] [, ... ] )
ALTER INDEX [ IF EXISTS ] 이름 RESET ( 저장옵션_매개변수명 [, ... ] )
ALTER INDEX [ IF EXISTS ] 이름 ALTER [ COLUMN ] 칼럼번호
    SET STATISTICS 정수
ALTER INDEX ALL IN TABLESPACE 이름 [ OWNED BY 롤이름 [, ... ] ]
    SET TABLESPACE 새테이블스페이스 [ NOWAIT ]

설명

ALTER INDEX 명령은 인덱스 속성을 바꾼다. 아래와 같이 여러 구문으로 사용된다. Note that the lock level required may differ for each subform. An ACCESS EXCLUSIVE lock is held unless explicitly noted. When multiple subcommands are listed, the lock held will be the strictest one required from any subcommand.

RENAME

RENAME 옵션은 인덱스의 이름을 바꾸는 작업을 한다. 이 때 인덱스 자료는 변경되지 않는다. 해당 인덱스가 테이블 제약 조건 UNIQUE, PRIMARY KEY, EXCLUDE)으로 사용되는 것이라면, 그 제약 조건 이름도 함께 바뀐다.

Renaming an index acquires a SHARE UPDATE EXCLUSIVE lock.

SET TABLESPACE

해당 인덱스의 저장 위치를 지정한 테이블스페스로 바꾼다. 이 작업이 수행 되면, 물리적인 실재 인덱스 파일이 옮겨진다. 테이블스페이스에 대한 설명는 CREATE TABLESPACE 명령 참조.

ATTACH PARTITION

변경하려는 인덱스에 하위 인덱스를 추가한다. 추가하려면 하위 인덱스는 변경하려는 인덱스와 관련된 파티션 테이블의 하위 테이블에서 사용하는 인덱스여야 한다. 또한 인덱스 정의가 상위와 하위가 모두 같아야 한다. 이 명령으로 인덱스가 추가되면, 그 추가된 인덱스는 독립적으로 삭제 될 수 없으며, 상위 인덱스가 삭제 될 때 자동으로 함께 삭제 된다.

DEPENDS ON EXTENSION 확장모듈이름
NO DEPENDS ON EXTENSION 확장모듈이름

해당 인덱스를 지정한 확장 모듈의 한 부분으로 지정해서, 확장 모듈이 삭제되면 함께 삭제 될 수 있도록 한다. NO 옵션을 추가하면 확장 모듈과의 의존 관계를 끊음.

SET ( 저장옵션_매개변수명 [= ] [, ... ] )

이 구문은 해당 인덱스의 저장 방식에 대한 옵션을 변경 할 수 있는 저장옵션 매개 변수값을 지정할 수 있다. 이 매개 변수에 대한 자세한 설명은 CREATE INDEX 명령에서 소개하고 있다. 이 명령으로 지정한 값은 실재 인덱스에 바로 적용되지 않는다는 점을 기억해야한다. REINDEX 명령으로 해당 인덱스를 다시 만들어야 원하는 대로 적용된다.

RESET ( 저장옵션_매개변수명 [, ... ] )

지정한 저장 옵션 매개 변수에 대해서 시스템 초기값으로 되돌리는 작업을 한다. 이 작업 또한 SET 구문의 사용법처럼, REINDEX 작업을 해주어야 반영된다.

ALTER [ COLUMN ] 칼럼번호 SET STATISTICS 정수

이 작업은 ANALYZE 작업 대상이 되는 칼럼별 통계 수집 범위를 지정한다. 이 칼럼번호는 해당 인덱스로 사용되는 칼럼 대상이며. 여기서는 칼럼 이름의 유일성을 보장할 수 없음으로 칼럼 순서 번호를 사용한다. 수집 대상 범위는 0부터 10000까지며, -1로 지정하면, 서버 기본값이 사용된다(default_statistics_target 참조). PostgreSQL 실행 계획과 통계 자료 수집에 대한 자세한 이야기는 14.2절에서 다룬다.

매개 변수

IF EXISTS

해당 인덱스가 없어도 오류를 내지 않고, 알림만 보여주고, 정상 종료 된다.

칼럼번호

인덱스에서 사용하는 그 칼럼들의 칼럼 가운데, 특정 위치 번호 (왼쪽에서 오른쪽, 1부터 시작)

이름

작업할 (스키마 이름을 포함 할 수도 있는) 인덱스 이름.

새이름

이름을 바꿀 새 인덱스 이름.

테이블스페이스이름

옮겨갈 새 테이블스페이스 이름.

확장모듈이름

이 인덱스와 관련 있는 확장 모듈 이름

저장옵션_매개변수명

변경할 인덱스 저장 옵션의 매개 변수명.

인덱스 저장 옵션 매개 변수의 값. 이 값은 해당 매개 변수 값으로 사용할 수 있는 숫자이거나 문자열이여야한다.

참고

이 작업들은 ALTER TABLE 명령에서도 가능하다. 내부적으로 보면, ALTER INDEX 명령은 ALTER TABLE 명령을 통한 인덱스 조작 명령의 별칭이다.

ALTER INDEX OWNER 명령도 사용될 수 있으나, 이 작업은 경고를 내면서 무시된다. 인덱스는 테이블 종속적이여서 인덱스의 소유주를 따로 지정할 수는 없다. 필요하다면, 테이블의 소유주를 변경할 수는 있다.

시스템 카탈로그 인덱스에 대해서는 어떠한 작업도 허용되지 않는다.

예제

인덱스 이름을 바꾸는 예제:

ALTER INDEX distributors RENAME TO suppliers;

다른 테이블스페이스로 이동하는 예제:

ALTER INDEX distributors SET TABLESPACE fasttablespace;

인덱스의 fill factor 값 변경(이 인덱스가 이 옵션을 지원한다고 했을 때):

ALTER INDEX distributors SET (fillfactor = 75);
REINDEX INDEX distributors;

인덱스 세번째 칼럼(표현식)의 통계 수집 범위를 지정한다:

CREATE INDEX coord_idx ON measured (x, y, (z + t));
ALTER INDEX coord_idx ALTER COLUMN 3 SET STATISTICS 1000;

호환성

ALTER INDEX 명령은 PostgreSQL 확장 기능이다.

관련 항목

CREATE INDEX, REINDEX