{#drop-property-index-drop-property-index}
# DROP PROPERTY INDEX
속성 인덱스를 지웁니다.
{#drop-property-index-synopsis}
## 개요
DROP PROPERTY INDEX[IF EXISTS]index_name[, ...][CASCADE|RESTRICT]
굵게 키워드 · 기울임 직접 채우는 자리 · [ ] 생략 가능 · ... 반복 가능. 구문 표기 규약을 참고하십시오.
{#drop-property-index-description}
## 설명
`DROP PROPERTY INDEX`는 [`CREATE PROPERTY INDEX`](create-property-index.md)가 만든 인덱스 하나
이상을 지우며, 그 밖에는 아무것도 지우지 않습니다.
- 이름은 `graph_path`가 지정한 그래프에서 해석되며 **수식할 수 없습니다.** 스키마를 붙인 이름은
`improper property index name`으로 거부됩니다. 다른 그래프의 인덱스를 지우려면 먼저
`graph_path`를 바꾸십시오.
- 속성 인덱스만 받아들여집니다. 그 레이블의 다른 인덱스는 `"" is not property index`로
거부됩니다. 기본 키, 간선 레이블의 끝점 인덱스, SQL로 만든 인덱스가 그렇습니다.
- 반면 `DROP INDEX`는 레이블의 어떤 인덱스든, 속성 인덱스를 포함해 받아들이므로, 어느 문장으로
만든 인덱스든 어느 문장으로도 지울 수 있습니다.
- 제약에 속한 인덱스는 [`DROP CONSTRAINT`](drop-constraint.md)로 그 제약과 함께 지워집니다.
{#drop-property-index-parameters}
## 매개변수
IF EXISTS
: 존재하지 않는 인덱스에 대해 오류가 아니라 알림을 냅니다. 같은 문장의 다른 이름은 그대로
지워집니다.
index_name
: 지울 속성 인덱스의 수식되지 않은 이름입니다. 쉼표로 구분해 여러 개를 줄 수 있고, 같은 레이블에
있어야 하는 것은 아닙니다.
CASCADE
: 그 인덱스에 의존하는 객체를 지웁니다.
RESTRICT
: 그 인덱스에 의존하는 것이 있으면 거부합니다. 이것이 기본값입니다. 인덱스에 의존하는 것은 드물어서
대개 두 선택이 같게 동작합니다.
{#drop-property-index-examples}
## 예제
예제는 [예제 데이터셋](../../get_started/example-dataset.md)을 쓰지 않고 자체 그래프인
`unindexed`를 만들고, 끝에서 그것을 지웁니다.
```cypher
CREATE GRAPH unindexed;
SET graph_path = unindexed;
CREATE VLABEL movie;
CREATE VLABEL person;
CREATE (:movie {title: 'Arrival', year: 2016}), (:person {name: 'Denis Villeneuve'});
CREATE PROPERTY INDEX movie_title_idx ON movie (title);
CREATE PROPERTY INDEX movie_year_idx ON movie (year);
CREATE PROPERTY INDEX person_name_idx ON person (name);
```
```psql
\dGi unindexed.*
```
```
List of property indexes
Graph | LabelName | IndexName | Unique | Owner | Indexdef
-----------+-----------+-----------------+--------+-------+--------------------------------------------------------------------
unindexed | movie | movie_title_idx | f | agens | CREATE PROPERTY INDEX movie_title_idx ON movie USING btree (title)
unindexed | movie | movie_year_idx | f | agens | CREATE PROPERTY INDEX movie_year_idx ON movie USING btree (year)
unindexed | person | person_name_idx | f | agens | CREATE PROPERTY INDEX person_name_idx ON person USING btree (name)
(3 rows)
```
{#drop-property-index-drop-one-index}
### 인덱스 하나 지우기
```cypher
DROP PROPERTY INDEX movie_title_idx;
```
```
DROP PROPERTY INDEX
```
두 번째 시도는 오류입니다. 그 인덱스가 이미 사라졌기 때문입니다:
```cypher
DROP PROPERTY INDEX movie_title_idx;
```
```
ERROR: index "movie_title_idx" does not exist
```
`IF EXISTS`는 그것을 알림으로 바꿉니다:
```cypher
DROP PROPERTY INDEX IF EXISTS movie_title_idx;
```
```
NOTICE: index "movie_title_idx" does not exist, skipping
DROP PROPERTY INDEX
```
{#drop-property-index-drop-several-indexes-at-once}
### 여러 인덱스를 한 번에 지우기
그 이름들이 같은 레이블에 속해야 하는 것은 아닙니다:
```cypher
DROP PROPERTY INDEX movie_year_idx, person_name_idx;
```
```
DROP PROPERTY INDEX
```
```psql
\dGi unindexed.*
```
```
No matching property indexes found.
```
{#drop-property-index-refusals-worth-recognizing}
### 알아 둘 만한 거부 사례
이름에 그래프를 붙일 수 없습니다:
```cypher
CREATE PROPERTY INDEX movie_title_idx ON movie (title);
DROP PROPERTY INDEX unindexed.movie_title_idx;
```
```
ERROR: improper property index name
```
이 문장이 소유하지 않은 인덱스는 거부됩니다. 레이블의 기본 키가 그런 것 중 하나입니다:
```cypher
DROP PROPERTY INDEX movie_pkey;
```
```
ERROR: "movie_pkey" is not property index
```
`DROP INDEX`도 속성 인덱스를 받아들입니다. 스키마를 붙인 이름으로 씁니다:
```sql
DROP INDEX unindexed.movie_title_idx;
```
```
DROP INDEX
```
마지막으로 예제가 만든 그래프를 지웁니다:
```cypher
DROP GRAPH unindexed CASCADE;
```
{#drop-property-index-notes}
## 참고
이름이 `graph_path`에서 해석되므로, 다른 그래프에 있는 인덱스는 남의 것이라고 나오는 것이 아니라
없는 것으로 읽힙니다:
```cypher
CREATE GRAPH oneplace;
SET graph_path = oneplace;
CREATE VLABEL movie;
CREATE PROPERTY INDEX movie_title_idx ON movie (title);
CREATE GRAPH otherplace;
SET graph_path = otherplace;
DROP PROPERTY INDEX movie_title_idx;
```
```
ERROR: index "movie_title_idx" does not exist
```
두 그래프가 같은 이름의 인덱스를 가질 수 있으므로, 수식 없는 이름이 어느 것에 닿을지 짐작하기 전에
`\dGi`로 확인하십시오.
```cypher
DROP GRAPH oneplace CASCADE;
DROP GRAPH otherplace CASCADE;
```
예컨대 대량 적재를 위해 레이블의 인덱스를 지우지 않고 끄려면, 대신
`ALTER VLABEL ... DISABLE INDEX`와 [`REINDEX VLABEL`](reindex.md)을 쓰십시오. 그러면 정의는 남고
무효 표시만 됩니다.
{#drop-property-index-compatibility}
## 호환성
{#drop-property-index-isoiec-39075-gql}
### ISO/IEC 39075 (GQL)
GQL에는 인덱스 DDL이 없습니다. 표준의 카탈로그 변경 문장은 스키마·그래프·그래프 타입(§12)에
한정되므로, `DROP PROPERTY INDEX`는 AgensGraph 자신의 것입니다.
{#drop-property-index-postgresql}
### PostgreSQL
`DROP PROPERTY INDEX`는 `DROP INDEX`에 대응하고, `IF EXISTS`와 이름 목록,
`CASCADE`/`RESTRICT`도 거기서와 같이 동작합니다. 다른 점이 세 가지입니다. 이름은 `search_path`가
아니라 `graph_path`에서 해석되며 스키마로 수식할 수 없습니다. `CONCURRENTLY`는 받아들여지지
않습니다. 그리고 두 문장은 엄격히 갈려 있습니다. 각각 상대의 인덱스를 거부하므로, 속성 인덱스는 이
문장으로만 지울 수 있습니다.
{#drop-property-index-see-also}
## 관련 항목
- [`CREATE PROPERTY INDEX`](create-property-index.md)
- [`REINDEX VLABEL`·`REINDEX ELABEL`](reindex.md)
- [`DROP CONSTRAINT`](drop-constraint.md)
- [그래프가 어떻게 저장되는가](#graph-on-postgresql-what-a-property-index-and-a-constraint-become)