티스토리 뷰

Neo4j

Cypher - INDEX & CONSTRAINT

joyHong 2020. 6. 16. 18:35

이번에는 성능 향상을 위한 인덱스 및 제약사항에 대해서 살펴보겠다.

 

1. 단일 인덱스 생성

CREATE INDEX person_name FOR (n:Person) ON (n.name)

인덱스명이 person_name이고 이 인덱스는 레이블이 Person인 노드의 name 프로퍼티에 생성되는 쿼리이다.

 

2. 인덱스 목록 보기

CALL db.indexes

 

3. 인덱스 삭제

DROP INDEX person_name

 

 

4. 복합 인덱스 생성

CREATE INDEX person_nameAndAge FOR (n:Person) ON (n.name, n.age)

인덱스명은 person_nameAndAge이고 LabelPerson인 노드의 nameage property로 복합 인덱스를 생성하는 쿼리이다.

 

Cypher 3.5 버전에서 equality check list의 요소인지 check만 가능했으나 4.0에서는 단일 인덱스에서 사용하는 모든 조건자를 지원한다. (제약 사항은 있음)

 

조건자는 아래와 같다.

  • equality checkn.prop = value
  • list membership checkn.prop IN list
  • existence checkexists(n.prop)
  • range searchn.prop > value
  • prefix searchSTARTS WITH
  • suffix searchENDS WITH
  • substring searchCONTAINS

제약사항에 대한 내용은

https://neo4j.com/docs/cypher-manual/4.0/administration/indexes-for-search-performance/#administration-indexes-single-vs-composite-index

를 참조하면 정확하게 파악할 수 있다.

 

 

다음으로는 제약사항에 대해 살펴보도록 하자.

1. 제약사항 생성

CREATE CONSTRAINT unique_person_ssn ON (n:Person) ASSERT n.ssn IS UNIQUE

레이블이 Person인 노드의 ssn 프로퍼티를 유니크한 값으로 하겠다는 쿼리이다.

이렇게 제약사항을 주게 되면 ssn 프로퍼티가 유일키가 되는 셈이 된다.

 

2. 제약사항 목록 보기

CALL db.constraints

 

3. 제약사항 삭제

DROP CONSTRAINT unique_person_ssn

 

 

이상으로 인덱스와 제약사항에 대해 살펴보았다.

 


참조 :

https://neo4j.com/docs/cypher-manual/4.0/

 

'Neo4j' 카테고리의 다른 글

Neosemantics  (0) 2020.06.17
IMPORT CSV  (2) 2020.06.17
Cypher - MATCH (2)  (0) 2020.06.15
Cypher - MERGE  (1) 2020.06.15
Cypher - REMOVE & DELETE  (0) 2020.06.15
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함