{#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)