2014-09-16 2 views
5

neo4j 2.1.4를 사용하고 있습니다. POINT 관계 - - 나는 노드가 관계를 조회하기 위해 내가 OBJ_COD 가치에 의한 도로를 검색 할 OBJ_CODCypher에서 관계 색인을 사용하는 방법

:schema ls -l :ROAD 

Indexes 
    ON :ROAD(OBJ_COD) ONLINE 
    ON :ROAD(ID)  ONLINE 

No constraints 

하지만 사이퍼 don'use 지수 - ROAD 내가 ROAD 속성에 대한 인덱스를 가지고있다.

neo4j-sh (?)$ profile MATCH (a)-[r:`ROAD` {ID:333275}]-(b:`POINT`) RETURN r LIMIT 1; 

ColumnFilter 
    | 
    +TraversalMatcher 

+------------------+------+---------+-------------+----------------+ 
|   Operator | Rows | DbHits | Identifiers |   Other | 
+------------------+------+---------+-------------+----------------+ 
|  ColumnFilter | 2 |  0 |    | keep columns r | 
| TraversalMatcher | 2 | 2265843 |    |  a, r, a | 
+------------------+------+---------+-------------+----------------+ 

cypher가 기존 색인을 사용하여 단일 관계를 검색하도록하려면 어떻게해야합니까?

답변

4

스키마 색인은 노드에서만 사용할 수 있습니다. 관계에 대한 인덱스가 필요하다는 사실은 거의 항상 그래프 데이터 모델링의 문제점을 보여줍니다. 일반적으로 인덱스를 사용하여 그래프 횡단에 대한 시작점을 찾습니다. 좋은 모델링 실습은 도메인에있는 어떤 것이 든 thing 또는 entity이 노드 여야하며 그 관계는 의미론 문맥에 things을 넣어야한다는 것입니다. 이를 수행하고 쿼리가 something에서 시작되면 인덱싱 관계가 필요하지 않습니다.

그러나 관계 색인 생성이 유효한 선택 일 수있는 드문 경우가 있습니다. 이 경우 관계에 대한 레거시 인덱스를 사용하려면 뒤로 물러 설 필요가 있습니다. fine documentation을 검토하여 작동 방식을 이해하십시오.

관련 문제