Neo4j - 循环中只匹配一个节点/时间

时间:2017-07-29 12:21:13

标签: python neo4j cypher

我想知道是否可以将MATCH限制为Cypher查询中的仅一个节点。

我有数十亿个节点,如果我在比赛中使用限制1,那么会有很大差异:

1)<!DOCTYPE html> <html> <head> <base target="_top"> </head> <br> <form> Details:<br> <input type="text" name="details"> <br> Quantity: <br> <input type="text" name="quantity"> <br><br> <input type="button" value="Submit" onclick="google.script.run .withSuccessHandler(google.script.host.close) .itemAdd(this.parentNode)" /> </form> </html>

2)MATCH (n:Node) WHERE n.id = "UUID" RETURN n LIMIT 1

(1)以毫秒为单位执行,(2)需要几分钟(我相信它会尝试使用该ID找到所有节点,尽管有唯一索引)。

现在,在一个包含两个两个节点ID的巨大CSV文件中,我希望匹配并创建如下关系:

MATCH (n:Node) WHERE n.id = "UUID" RETURN n

这需要很长时间。我尝试在最后添加PROFILE USING PERIODIC COMMIT 100000 LOAD CSV WITH HEADERS FROM "file:///CSV_FILE.csv" as row MATCH (n:Node {id: row.`:START_ID`}) MATCH (m:Node {id: row.`:END_ID`}) MERGE (n)-[:RELATION]->(m) ,结果非常快,但循环本身在第一行之后被中断。改为LIMIT 1而且表现会下降到糟糕的水平。

有没有办法将每个匹配限制为只有一个节点?

0 个答案:

没有答案