상황은 다음과 같습니다. 고유하고 인덱싱 된 것으로 설정된 ContactId 속성이있는 노드가 있습니다. 노드 레이블은 다음과 같습니다 (: 연락처 {ContactID가 1} 노드) : Neo4j 2.0 고유 제약 조건 성능 병합으로 병합 하시겠습니까?
내가 주소에 대한 그 패턴과 유사한 다른 노드가 (노드 2 : 주소 {AddressId : 1})
지금 시도 에 문의 (참조를 위해 ContactId를 포함하는) 새 노드를 추가하려면 (노드 3 : ContactAddress {AddressId : 1, ContactId : 1})
각 노드에 대해 병합 명령을 실행할 때 추가 할 시간 다른 노드 유형에서 고유 한 것으로 설정된 등록 정보를 포함하는 노드는 프로세스를 훨씬 느리게 만듭니다.
ContactAddress 노드는 연락처 노드와 주소 노드 사이의 관계형 속성 만 포함합니다. 연락처 및 주소 노드는 각각 최대 10 개의 속성을 포함합니다. 이것은 Neo4j가 속성 키 -> 값 -> 노드 레이블을 확인하는 버그입니까? 아래
코드 및 스크린 샷 :
string strForEach = string.Format("(n in {{{0}}} |
MERGE (c:{1} {{{2} : n.{2}}}) SET c = n)", propKey, label, PK_Field);
var query = client
.Cypher
.ForEach(strForEach)
.WithParam(propKey, entities.ToList());
감사 마이클의
ON CREATE SET
절을 사용하고 싶습니다. 내가 사용하고있는 매개 변수는 항목 목록입니다. 레이블과 고유 키에 params를 추가 할 수 있습니다. On Create 기능을 사용하면 작업 속도가 빨라 집니까? 이 예에서 전체 병합 지점은 새 목록에 따라 값을 항상 업데이트하려고합니다. 따라서 create와 on match에서'set c = n'을 사용하십시오. 다른 문제는 목록이 동적이기 때문에 예제 에서처럼 속성을 설정하는 것이 다소 번거롭기는하지만 성능에 도움이된다고 생각하면 시도해 볼 수 있습니다. 이것에 대해 이야기하는 곳이면 어디서나 문서를 알고 있습니까? – dcinzona또한 병합은 첫 번째 두 노드 유형 (연락처 및 주소)에서도 발생하지만 약 1/2 초 (여전히 짜증이납니다)로 삽입되지만 '연락처 주소' 인덱싱 된 ContactId 및 AddressId 키가 모두 포함 된 노드 삽입은 상당히 오래 걸립니다. – dcinzona
params 코멘트와 관련하여 또 다른 빠른 질문입니다. 어떻게 라벨을 두 번째로 조회하는 것이 더 빠를 수 있습니까? 즉, {{labelName} -> Params를 올바른 값으로 검색 -> 두 번째 매개 변수 목록의 조회 값이 첫 번째 매개 변수 구문 분석 단계 전체를 건너 뛰는 것보다 빠를 수 있습니다. 내 머리 속에는 2 개의 조회가 하나보다 빠를 수는 없지만, 다시 말해서 Neo4j에 정말 새로워졌습니다. params lookup이 정적으로 문자열을 설정하는 것보다 빠르다면, 그 변경을 할 것입니다. 나는 그것이 어떻게 될지 보지 못한다. – dcinzona