使用Neo4j 2.1.4。我有一個節點之間有'IS A'關係(和其他類型的關係)的圖。我在圖中有一些層次結構(IS A關係),我需要知道與第二層次的某些後裔具有特定已知關係的一個層次結構的後代(IS關係)。如果這種特定的已知關係存在,我將返回第一層次的後代。Neo4j - 緩慢密碼查詢 - 層次結構大圖
INPUTS:'ID_parentnode_hierarchy_01','ID_relationship','ID_parentnode_hierarchy_02'。
輸出:具有'ID_relationship'的'ID_parentnode_hierarchy_01'的後代(IS關係)與'ID_parentnode_hierarchy_02'的某些後代。
注意:該圖有500.000個節點和200萬個關係。
我正在使用這個密碼查詢,但它非常慢(在4GB RAM和3GHz奔騰雙核64位PC中約40秒)。有可能建立一個更快的查詢?
MATCH (parentnode_hierarchy_01: Node{nodeid : {ID_parentnode_hierarchy_01}})
WITH parentnode_hierarchy_01
MATCH (parentnode_hierarchy_01) <- [:REL* {reltype: {isA}}] - (descendants01: Node)
WITH descendants01
MATCH (descendants01) - [:REL {reltype: {ID_relationship}}] -> (descendants02: Node)
WITH descendants02, descendants01
MATCH (parentnode_hierarchy_02: Node {nodeid: {ID_parentnode_hierarchy_02} })
<- [:REL* {reltype: {isA}}] - (descendants02)
RETURN DISTINCT descendants01;
非常感謝。
如果可能,請勿使用通用關係類型和rel-properties。這會減慢你的查詢速度。 – 2014-10-20 15:17:31
我從一個CSV文件生成我的圖表閱讀與'負載CSV的標題從...'和'...創建(c1) - [:REL {reltype:rel.relid,reldesc:rel.desc}] - > (C2)」。我不知道如何建立'rel.relid'(來自CSV文件)作爲關係的類型。這就是爲什麼我使用通用的'REL'關係。謝謝。 – Vicente 2014-10-21 09:52:57