enter image description here我有一个分层数据集节点,如附带问题的图像所示。 R1具有特定ID,R11,R12,R22,R21具有特定ID。但是节点All R2和All R1都没有虚拟ID。现在我有一个存储层次结构详细信息的csv文件。我试图导入数据并创建包含近50k条目的树。但是,它很慢。以下是我用来创建的查询:
using periodic commit LOAD CSV WITH HEADERS FROM "file:///file.csv" AS row
match (rTemp:Resource) where rTemp.id = toInteger(row.resourceSubid)
match (r:Resource) where r.id = toInteger(row.resourceId)
merge (r)-[:has]->(allR)
merge (allR)-[:has]-> (rTemp)
return r;
创建此层次结构所需的时间太慢。怎么过来这个? 注意:我已经创建了R1并将其分别附加到所有R1 / R2节点。
答案 0 :(得分:0)
如果您查询或解析查询,您会注意到查询计划中有一个Eager操作。
此外,如果您将查询粘贴到浏览器的查询文本框中,您会发现一条警告:
此查询的执行计划包含Eager运算符,该运算符强制所有相关数据在继续执行之前在主内存中实现
在执行计划包含Eager运算符的查询中使用带有大数据集的LOAD CSV可能会消耗大量内存,并且可能无法正常运行。有关如何避免问题的更多信息和提示,请参阅Eager运算符上的Neo4j手册条目。
allR
是否必要?如果删除使用此变量并仅使用merge (r)-[:has]->(rTemp)
,则急切消失,定期提交将开始工作。
此外,是否有必要在查询结束时return r
?