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
확장 기능이다.